diff --git a/AKModel/apps.py b/AKModel/apps.py index c7d4c432e622c998f8f8f9d370b2e556eb158c3d..5af2af0d5ddb4c45cf30635743e869d3c32a62f1 100644 --- a/AKModel/apps.py +++ b/AKModel/apps.py @@ -1,5 +1,10 @@ from django.apps import AppConfig +from django.contrib.admin.apps import AdminConfig class AkmodelConfig(AppConfig): name = 'AKModel' + + +class AKAdminConfig(AdminConfig): + default_site = 'AKModel.site.AKAdminSite' diff --git a/AKModel/site.py b/AKModel/site.py new file mode 100644 index 0000000000000000000000000000000000000000..56affff92d589d3c69c5d7e792b83527a92e5f2f --- /dev/null +++ b/AKModel/site.py @@ -0,0 +1,22 @@ +from django.contrib.admin import AdminSite + +from AKModel.models import Event + + +class AKAdminSite(AdminSite): + index_template = "admin/ak_index.html" + + def get_urls(self): + from django.urls import path + + urls = super().get_urls() + urls += [ + # path('...', self.admin_view(...)), + ] + return urls + + def index(self, request, extra_context=None): + if extra_context is None: + extra_context = {} + extra_context["active_events"] = Event.objects.filter(active=True) + return super().index(request, extra_context) diff --git a/AKModel/templates/admin/ak_index.html b/AKModel/templates/admin/ak_index.html new file mode 100644 index 0000000000000000000000000000000000000000..535ba3883cc6666858ee56e4fbbee911f64b9fb1 --- /dev/null +++ b/AKModel/templates/admin/ak_index.html @@ -0,0 +1,20 @@ +{% extends "admin/index.html" %} + +{% load i18n tz %} + +{% block content %} + <div style="margin-bottom: 20px;"> + <h2>{% trans "Active Events" %}:</h2> + + <ul> + {% for event in active_events %} + <li> + {{ event }} + ({{ event.start|timezone:event.timezone|date:"d.m.y"}} - + {{ event.end|timezone:event.timezone|date:"d.m.y"}}) + </li> + {% endfor %} + </ul> + </div> +{{ block.super }} +{% endblock %} diff --git a/AKModel/views.py b/AKModel/views.py index 1d6b95eb26e2d456f76e6c55f8fd6c759cedb5a9..645797f3f1e5e798a8d6b99897f8d871ff6dfc7d 100644 --- a/AKModel/views.py +++ b/AKModel/views.py @@ -1,3 +1,4 @@ +from django.contrib import admin from django.shortcuts import get_object_or_404 from django.views.generic import TemplateView from rest_framework import viewsets, permissions, mixins @@ -50,6 +51,13 @@ class FilterByEventSlugMixin(EventSlugMixin): return super().get_queryset().filter(event=self.event) +class AdminViewMixin: + def get_context_data(self, **kwargs): + extra = admin.site.each_context(self.request) + extra.update(super().get_context_data(**kwargs)) + return extra + + class AKOwnerViewSet(EventSlugMixin, mixins.RetrieveModelMixin, mixins.ListModelMixin, viewsets.GenericViewSet): permission_classes = (permissions.DjangoModelPermissionsOrAnonReadOnly,) serializer_class = AKOwnerSerializer diff --git a/AKPlanning/settings.py b/AKPlanning/settings.py index 83d1340a243f6db363953824c7fb4343d5653fe4..f1421794acc9029b8de67bdf33007e261451b941 100644 --- a/AKPlanning/settings.py +++ b/AKPlanning/settings.py @@ -37,7 +37,7 @@ INSTALLED_APPS = [ 'AKSubmission.apps.AksubmissionConfig', 'AKScheduling.apps.AkschedulingConfig', 'AKPlan.apps.AkplanConfig', - 'django.contrib.admin', + 'AKModel.apps.AKAdminConfig', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', diff --git a/templates/admin_base.html b/templates/admin_base.html new file mode 100644 index 0000000000000000000000000000000000000000..cecf50f3694855670212591a35db6791be08c152 --- /dev/null +++ b/templates/admin_base.html @@ -0,0 +1,20 @@ +{% extends "admin/base_site.html" %} + +{% load bootstrap4 %} +{% load fontawesome_5 %} + +{% block extrahead %} + {% bootstrap_css %} + {% bootstrap_javascript jquery='slim' %} + {% fontawesome_5_static %} + + <style> + a.btn { + color: #FFFFFF; + } + + .block-header { + margin-top: 20px; + } + </style> +{% endblock %}