Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

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
  • Loading branch information...
commit fe5194ecfd8ad5ad27c6bddc10fa8c6837d290f6 1 parent d34639b
Adrian Holovaty adrianholovaty authored
Showing with 19 additions and 6 deletions.
  1. +19 −6 django/contrib/admin/sites.py
25 django/contrib/admin/sites.py
View
@@ -234,11 +234,12 @@ def index(self, request):
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 @@ def index(self, request):
'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,
Please sign in to comment.
Something went wrong with that request. Please try again.