diff options
| author | Adrian Holovaty <adrian@holovaty.com> | 2007-06-07 22:12:58 +0000 |
|---|---|---|
| committer | Adrian Holovaty <adrian@holovaty.com> | 2007-06-07 22:12:58 +0000 |
| commit | fe5194ecfd8ad5ad27c6bddc10fa8c6837d290f6 (patch) | |
| tree | 1cbf613ac953497b86fad1ca9c71065a503d7bec | |
| parent | d34639b09bf85dfb1b6f9a4b59f8ccbc3117230b (diff) | |
newforms-admin: Fixed #4258 and #4477 -- Changed admin index page to group by applications, and alphabetized things. Thanks to Matthias Pronk and Honza Kral for the patches; I ended up using a hybrid of both
git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@5441 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/contrib/admin/sites.py | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/django/contrib/admin/sites.py b/django/contrib/admin/sites.py index b236dc8f93..14f0a2f1ad 100644 --- a/django/contrib/admin/sites.py +++ b/django/contrib/admin/sites.py @@ -234,11 +234,12 @@ class AdminSite(object): Displays the main admin index page, which lists all of the installed apps that have been registered in this site. """ - app_list = [] + app_dict = {} user = request.user for model, model_admin in self._registry.items(): app_label = model._meta.app_label has_module_perms = user.has_module_perms(app_label) + if has_module_perms: perms = { 'add': user.has_perm("%s.%s" % (app_label, model._meta.get_add_permission())), @@ -254,11 +255,23 @@ class AdminSite(object): 'admin_url': '%s/%s/' % (app_label, model.__name__.lower()), 'perms': perms, } - app_list.append({ - 'name': app_label.title(), - 'has_module_perms': has_module_perms, - 'models': [model_dict], - }) + if app_label in app_dict: + app_dict[app_label]['models'].append(model_dict) + else: + app_dict[app_label] = { + 'name': app_label.title(), + 'has_module_perms': has_module_perms, + 'models': [model_dict], + } + + # Sort the apps alphabetically. + app_list = app_dict.values() + app_list.sort(lambda x, y: cmp(x['name'], y['name'])) + + # Sort the models alphabetically within each app. + for app in app_list: + app['models'].sort(lambda x, y: cmp(x['name'], y['name'])) + return render_to_response('admin/index.html', { 'title': _('Site administration'), 'app_list': app_list, |
