summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Holovaty <adrian@holovaty.com>2007-06-07 22:12:58 +0000
committerAdrian Holovaty <adrian@holovaty.com>2007-06-07 22:12:58 +0000
commitfe5194ecfd8ad5ad27c6bddc10fa8c6837d290f6 (patch)
tree1cbf613ac953497b86fad1ca9c71065a503d7bec
parentd34639b09bf85dfb1b6f9a4b59f8ccbc3117230b (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.py25
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,