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): | 
