Skip to content
Snippets Groups Projects
Select Git revision
  • 137a392648c43db9da5d0e2999881a265d3ad877
  • test default
  • master protected
3 results

admin.py

Blame
  • admin.py 1.21 KiB
    import copy
    
    from django.conf import settings
    from django.contrib import admin
    from django_admin_index.models import AppGroup, AppGroupQuerySet
    
    
    def get_app_list(self, request):
        app_dict = self._build_app_dict(request)
    
        for app_name, object_list in app_dict.items():
            if app_name in settings.ADMIN_ORDERING:
                app = app_dict[app_name]
                app["models"].sort(
                    key=lambda model: settings.ADMIN_ORDERING[app_name].index(
                        model["object_name"]
                    )
                )
                app_dict[app_name]
    
                yield app
            else:
                yield app_dict[app_name]
    
    
    admin.AdminSite.get_app_list = get_app_list
    
    
    original_as_list_func = copy.deepcopy(AppGroupQuerySet.as_list)
    
    
    def as_list(self, request, include_remaining=True):
        result = original_as_list_func(self, request, include_remaining=include_remaining)
    
        for item in result:
            if item["app_label"] not in settings.ADMIN_ORDERING:
                continue
    
            item["models"].sort(
                key=lambda model: (
                    settings.ADMIN_ORDERING[item["app_label"]].index(model["object_name"])
                )
            )
    
        return result
    
    
    AppGroupQuerySet.as_list = as_list