wtf, je to podle dokumentace… a bugreportu

This commit is contained in:
Pavel "LEdoian" Turinsky 2024-06-03 02:52:48 +02:00
parent 381c5ca3de
commit bee0083dac
3 changed files with 36 additions and 27 deletions

View file

@ -5,7 +5,6 @@ jako první) adminu k Semináři.
""" """
import locale import locale
from django.contrib import admin from django.contrib import admin
from django.contrib.admin import AdminSite
from django.contrib.flatpages.models import FlatPage from django.contrib.flatpages.models import FlatPage
# Note: we are renaming the original Admin and Form as we import them! # Note: we are renaming the original Admin and Form as we import them!
@ -33,31 +32,28 @@ admin.site.register(FlatPage, FlatPageAdmin)
locale.setlocale(locale.LC_COLLATE, 'cs_CZ.UTF-8') locale.setlocale(locale.LC_COLLATE, 'cs_CZ.UTF-8')
# https://books.agiliq.com/projects/django-admin-cookbook/en/latest/set_ordering.html # Ref: https://docs.djangoproject.com/en/4.2/ref/contrib/admin/#overriding-default-admin-site
# FIXME zpraseno pomocí toho, že Python umí bez problému přepisovat funkce # Používá se z mamweb/apps.py
def get_app_list(self, request, app_label=None): class MamwebAdminSite(admin.AdminSite):
""" # Přeuspořádání modelů
Return a sorted list of all the installed apps that have been # Ref: https://docs.djangoproject.com/en/4.2/ref/contrib/admin/#django.contrib.admin.AdminSite.get_app_list
registered in this site. def get_app_list(self, request, app_label=None):
""" orig_app_list = super().get_app_list(request, app_label)
apps_by_label = {app['label']: app for app in orig_app_list}
app_dict = self._build_app_dict(request, label=app_label) aplikace_nahore = [
aplikace_nahore = [ 'seminar',
'seminar', 'personalni',
'personalni', 'novinky',
'novinky', 'korektury',
'korektury', 'various',
'various', 'prednasky',
'prednasky', 'soustredeni',
'soustredeni', ]
] app_list = [apps_by_label[label] for label in aplikace_nahore] + [apps_by_label[label] for label in apps_by_label if label not in aplikace_nahore]
app_list = [app_dict[label] for label in aplikace_nahore] + [app_dict[label] for label in app_dict if label not in aplikace_nahore]
# TreeNody na konec
for app in app_list:
app['models'].sort(key=lambda x: locale.strxfrm('žž' + x['name'].lower()) if (x['name'].endswith("(Node)")) else locale.strxfrm(x['name'].lower()))
# Sort the models alphabetically within each app. return app_list
for app in app_list:
app['models'].sort(key=lambda x: locale.strxfrm('žž' + x['name'].lower()) if (x['name'].endswith("(Node)")) else locale.strxfrm(x['name'].lower()))
return app_list
AdminSite.get_app_list = get_app_list

12
mamweb/apps.py Normal file
View file

@ -0,0 +1,12 @@
from django.contrib.admin import apps
# Nemůžeme importovat rovnou AdminConfig, jinak se autodetekuje˙:-/
# https://code.djangoproject.com/ticket/32642
# Ref: https://docs.djangoproject.com/en/4.2/ref/contrib/admin/#overriding-default-admin-site
# Pozn: nad tím je „Customizing the AdminSite class“, ale ta nepřepisuje
# default, takže bychom museli přepsat všechny registrace do admina. Proto
# radši overridujeme i AdminConfig
class MamwebAdminConfig(apps.AdminConfig):
default_site = 'mamweb.admin.MamwebAdminSite'

View file

@ -108,6 +108,7 @@ INSTALLED_APPS = (
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'django.contrib.auth', 'django.contrib.auth',
'mamweb.apps',
# Utilities # Utilities
'reversion', 'reversion',
'django_countries', 'django_countries',
@ -159,7 +160,7 @@ INSTALLED_APPS = (
# 'admin_tools.theming', # 'admin_tools.theming',
# 'admin_tools.menu', # 'admin_tools.menu',
# 'admin_tools.dashboard', # 'admin_tools.dashboard',
'django.contrib.admin', # 'django.contrib.admin',
# Nechat na konci (INSTALLED_APPS je uspořádané): # Nechat na konci (INSTALLED_APPS je uspořádané):
'django_cleanup.apps.CleanupConfig', # Uklízí media/ 'django_cleanup.apps.CleanupConfig', # Uklízí media/