1
0
mirror of https://github.com/django/django.git synced 2025-07-04 17:59:13 +00:00

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
This commit is contained in:
Adrian Holovaty 2007-06-07 22:12:58 +00:00
parent d34639b09b
commit fe5194ecfd

View File

@ -234,11 +234,12 @@ class AdminSite(object):
Displays the main admin index page, which lists all of the installed Displays the main admin index page, which lists all of the installed
apps that have been registered in this site. apps that have been registered in this site.
""" """
app_list = [] app_dict = {}
user = request.user user = request.user
for model, model_admin in self._registry.items(): for model, model_admin in self._registry.items():
app_label = model._meta.app_label app_label = model._meta.app_label
has_module_perms = user.has_module_perms(app_label) has_module_perms = user.has_module_perms(app_label)
if has_module_perms: if has_module_perms:
perms = { perms = {
'add': user.has_perm("%s.%s" % (app_label, model._meta.get_add_permission())), '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()), 'admin_url': '%s/%s/' % (app_label, model.__name__.lower()),
'perms': perms, 'perms': perms,
} }
app_list.append({ if app_label in app_dict:
app_dict[app_label]['models'].append(model_dict)
else:
app_dict[app_label] = {
'name': app_label.title(), 'name': app_label.title(),
'has_module_perms': has_module_perms, 'has_module_perms': has_module_perms,
'models': [model_dict], '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', { return render_to_response('admin/index.html', {
'title': _('Site administration'), 'title': _('Site administration'),
'app_list': app_list, 'app_list': app_list,