diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2023-02-23 18:25:00 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2023-02-24 12:54:52 +0100 |
commit | 13dcb0b70054fd9a00a128b587d790915e018725 (patch) | |
tree | c212ca1dca6ad6be82fd20286ffce2363fc8ab3b /ishtar_common/apps.py | |
parent | 3f05d499e479b72486e33ff0b48ae4febf91dac3 (diff) | |
download | Ishtar-13dcb0b70054fd9a00a128b587d790915e018725.tar.bz2 Ishtar-13dcb0b70054fd9a00a128b587d790915e018725.zip |
Admin: fix subsection for view by app - Update translations
Diffstat (limited to 'ishtar_common/apps.py')
-rw-r--r-- | ishtar_common/apps.py | 40 |
1 files changed, 33 insertions, 7 deletions
diff --git a/ishtar_common/apps.py b/ishtar_common/apps.py index 1f076462d..2a726dd4c 100644 --- a/ishtar_common/apps.py +++ b/ishtar_common/apps.py @@ -1,5 +1,7 @@ from django.apps import AppConfig, apps from django.contrib.admin import AdminSite +from django.http import Http404 +from django.template.response import TemplateResponse from django.urls import NoReverseMatch, reverse from django.utils.text import capfirst from django.utils.translation import ugettext_lazy as _ @@ -10,8 +12,9 @@ class IshtarAdminSite(AdminSite): site_title = _("Ishtar administration") MODEL_OVERLOAD = { - # (app, model) -> new app - ("ishtar_common", "OperationType"): "archaeological_operations" + # (app, model) -> (new app, section) + ("ishtar_common", "OperationType"): ("archaeological_operations", ""), + ("authtoken", "Token"): ("ishtar_common", _("API")), } def _build_app_dict(self, request, label=None): @@ -33,8 +36,10 @@ class IshtarAdminSite(AdminSite): app_label = model._meta.app_label # Ishtar object_name = model._meta.object_name + admin_section = getattr(model, "ADMIN_SECTION", "") if (app_label, object_name) in self.MODEL_OVERLOAD: - app_label_for_dict = self.MODEL_OVERLOAD[(app_label, object_name)] + app_label_for_dict, admin_section = \ + self.MODEL_OVERLOAD[(app_label, object_name)] else: app_label_for_dict = app_label # end Ishtar @@ -59,7 +64,7 @@ class IshtarAdminSite(AdminSite): 'admin_url': None, 'add_url': None, # Ishtar change - 'admin_section': getattr(model, "ADMIN_SECTION", ""), + 'admin_section': admin_section, # End Ishtar change } if perms.get('change') or perms.get('view'): @@ -107,13 +112,34 @@ class IshtarAdminSite(AdminSite): # Sort the models alphabetically within each app. for app in app_list: app['models'].sort(key=lambda x: (x['admin_section'], x['name'])) # Ishtar change - return app_list + def app_index(self, request, app_label, extra_context=None): + # copied from contrib/admin/sites.py + # overload to sort models by "admin_section" + app_dict = self._build_app_dict(request, app_label) + if not app_dict: + raise Http404('The requested admin page does not exist.') + # Sort the models alphabetically within each app. + app_dict['models'].sort(key=lambda x: (x['admin_section'], x['name'])) # Ishtar change + app_name = apps.get_app_config(app_label).verbose_name + context = { + **self.each_context(request), + 'title': _('%(app)s administration') % {'app': app_name}, + 'app_list': [app_dict], + 'app_label': app_label, + **(extra_context or {}), + } + + request.current_app = self.name + + return TemplateResponse(request, self.app_index_template or [ + 'admin/%s/app_index.html' % app_label, + 'admin/app_index.html' + ], context) + admin_site = IshtarAdminSite() -# AFAC -#name="ishtaradmin") class TranslationOverloadConfig(AppConfig): |