code quality
This commit is contained in:
		@ -1,20 +1,18 @@
 | 
			
		||||
from django.contrib import admin
 | 
			
		||||
from django.urls import path, include, reverse
 | 
			
		||||
from django.urls import include, path, reverse
 | 
			
		||||
from django.utils.translation import gettext_lazy as _
 | 
			
		||||
 | 
			
		||||
from rest_framework.routers import DefaultRouter
 | 
			
		||||
 | 
			
		||||
from .models import Comment, Diffusion, Program
 | 
			
		||||
from .views.admin import StatisticsView
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
__all__ = ['AdminSite']
 | 
			
		||||
__all__ = ["AdminSite"]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class AdminSite(admin.AdminSite):
 | 
			
		||||
    extra_urls = None
 | 
			
		||||
    tools = [
 | 
			
		||||
        (_('Statistics'), 'admin:tools-stats'),
 | 
			
		||||
        (_("Statistics"), "admin:tools-stats"),
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    def __init__(self, *args, **kwargs):
 | 
			
		||||
@ -25,41 +23,52 @@ class AdminSite(admin.AdminSite):
 | 
			
		||||
 | 
			
		||||
    def each_context(self, request):
 | 
			
		||||
        context = super().each_context(request)
 | 
			
		||||
        context.update({
 | 
			
		||||
            # all programs
 | 
			
		||||
            'programs': Program.objects.active().values('pk', 'title') \
 | 
			
		||||
                                       .order_by('title'),
 | 
			
		||||
            # today's diffusions
 | 
			
		||||
            'diffusions': Diffusion.objects.date().order_by('start') \
 | 
			
		||||
                                   .select_related('episode'),
 | 
			
		||||
            # TODO: only for dashboard
 | 
			
		||||
            # last comments
 | 
			
		||||
            'comments': Comment.objects.order_by('-date')
 | 
			
		||||
                               .select_related('page')[0:10],
 | 
			
		||||
        })
 | 
			
		||||
        context.update(
 | 
			
		||||
            {
 | 
			
		||||
                # all programs
 | 
			
		||||
                "programs": Program.objects.active()
 | 
			
		||||
                .values("pk", "title")
 | 
			
		||||
                .order_by("title"),
 | 
			
		||||
                # today's diffusions
 | 
			
		||||
                "diffusions": Diffusion.objects.date()
 | 
			
		||||
                .order_by("start")
 | 
			
		||||
                .select_related("episode"),
 | 
			
		||||
                # TODO: only for dashboard
 | 
			
		||||
                # last comments
 | 
			
		||||
                "comments": Comment.objects.order_by("-date").select_related(
 | 
			
		||||
                    "page"
 | 
			
		||||
                )[0:10],
 | 
			
		||||
            }
 | 
			
		||||
        )
 | 
			
		||||
        return context
 | 
			
		||||
 | 
			
		||||
    def get_urls(self):
 | 
			
		||||
        urls =  [
 | 
			
		||||
            path('api/', include((self.router.urls, 'api'))),
 | 
			
		||||
            path('tools/statistics/',
 | 
			
		||||
                 self.admin_view(StatisticsView.as_view()),
 | 
			
		||||
                 name='tools-stats'),
 | 
			
		||||
            path('tools/statistics/<date:date>/',
 | 
			
		||||
                 self.admin_view(StatisticsView.as_view()),
 | 
			
		||||
                 name='tools-stats'),
 | 
			
		||||
        ] + self.extra_urls + super().get_urls()
 | 
			
		||||
        urls = (
 | 
			
		||||
            [
 | 
			
		||||
                path("api/", include((self.router.urls, "api"))),
 | 
			
		||||
                path(
 | 
			
		||||
                    "tools/statistics/",
 | 
			
		||||
                    self.admin_view(StatisticsView.as_view()),
 | 
			
		||||
                    name="tools-stats",
 | 
			
		||||
                ),
 | 
			
		||||
                path(
 | 
			
		||||
                    "tools/statistics/<date:date>/",
 | 
			
		||||
                    self.admin_view(StatisticsView.as_view()),
 | 
			
		||||
                    name="tools-stats",
 | 
			
		||||
                ),
 | 
			
		||||
            ]
 | 
			
		||||
            + self.extra_urls
 | 
			
		||||
            + super().get_urls()
 | 
			
		||||
        )
 | 
			
		||||
        return urls
 | 
			
		||||
 | 
			
		||||
    def get_tools(self):
 | 
			
		||||
        return [(label, reverse(url)) for label, url in self.tools]
 | 
			
		||||
 | 
			
		||||
    def route_view(self, url, view, name, admin_view=True, label=None):
 | 
			
		||||
        self.extra_urls.append(path(
 | 
			
		||||
            url, self.admin_view(view) if admin_view else view, name=name
 | 
			
		||||
        ))
 | 
			
		||||
        self.extra_urls.append(
 | 
			
		||||
            path(url, self.admin_view(view) if admin_view else view, name=name)
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        if label:
 | 
			
		||||
            self.tools.append((label, 'admin:' + name))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            self.tools.append((label, "admin:" + name))
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user