summaryrefslogtreecommitdiff
path: root/ishtar_common/apps.py
diff options
context:
space:
mode:
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
commit13dcb0b70054fd9a00a128b587d790915e018725 (patch)
treec212ca1dca6ad6be82fd20286ffce2363fc8ab3b /ishtar_common/apps.py
parent3f05d499e479b72486e33ff0b48ae4febf91dac3 (diff)
downloadIshtar-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.py40
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):