Author: brosner
Date: 2008-08-22 23:00:15 -0500 (Fri, 22 Aug 2008)
New Revision: 8474
Added:
django/trunk/django/contrib/admin/templates/admin/app_index.html
Modified:
django/trunk/AUTHORS
django/trunk/django/contrib/admin/media/css/global.css
django/trunk/django/contrib/admin/options.py
django/trunk/django/contrib/admin/sites.py
django/trunk/django/contrib/admin/templates/admin/change_form.html
django/trunk/django/contrib/admin/templates/admin/change_list.html
django/trunk/django/contrib/admin/templates/admin/delete_confirmation.html
django/trunk/django/contrib/admin/templates/admin/index.html
Log:
Fixed #1390 -- Added an app index in the admin interface. Thanks juliae and ext
for their work on patches.
Modified: django/trunk/AUTHORS
===================================================================
--- django/trunk/AUTHORS 2008-08-23 03:26:01 UTC (rev 8473)
+++ django/trunk/AUTHORS 2008-08-23 04:00:15 UTC (rev 8474)
@@ -207,6 +207,7 @@
Nis Jørgensen <[EMAIL PROTECTED]>
Michael Josephson <http://www.sdjournal.com/>
[EMAIL PROTECTED]
+ juliae
[EMAIL PROTECTED]
Antti Kaihola <http://akaihola.blogspot.com/>
Bahadır Kandemir <[EMAIL PROTECTED]>
Modified: django/trunk/django/contrib/admin/media/css/global.css
===================================================================
--- django/trunk/django/contrib/admin/media/css/global.css 2008-08-23
03:26:01 UTC (rev 8473)
+++ django/trunk/django/contrib/admin/media/css/global.css 2008-08-23
04:00:15 UTC (rev 8474)
@@ -4,6 +4,7 @@
a:link, a:visited { color: #5b80b2; text-decoration:none; }
a:hover { color: #036; }
a img { border:none; }
+a.section:link, a.section:visited { color: white; text-decoration:none; }
/* GLOBAL DEFAULTS */
p, ol, ul, dl { margin:.2em 0 .8em 0; }
Modified: django/trunk/django/contrib/admin/options.py
===================================================================
--- django/trunk/django/contrib/admin/options.py 2008-08-23 03:26:01 UTC
(rev 8473)
+++ django/trunk/django/contrib/admin/options.py 2008-08-23 04:00:15 UTC
(rev 8474)
@@ -522,6 +522,7 @@
'inline_admin_formsets': inline_admin_formsets,
'errors': helpers.AdminErrorList(form, formsets),
'root_path': self.admin_site.root_path,
+ 'app_label': app_label,
}
context.update(extra_context or {})
return self.render_change_form(request, context, add=True)
@@ -600,6 +601,7 @@
'inline_admin_formsets': inline_admin_formsets,
'errors': helpers.AdminErrorList(form, formsets),
'root_path': self.admin_site.root_path,
+ 'app_label': app_label,
}
context.update(extra_context or {})
return self.render_change_form(request, context, change=True, obj=obj)
@@ -631,6 +633,7 @@
'cl': cl,
'has_add_permission': self.has_add_permission(request),
'root_path': self.admin_site.root_path,
+ 'app_label': app_label,
}
context.update(extra_context or {})
return render_to_response(self.change_list_template or [
@@ -685,6 +688,7 @@
"perms_lacking": perms_needed,
"opts": opts,
"root_path": self.admin_site.root_path,
+ "app_label": app_label,
}
context.update(extra_context or {})
return render_to_response(self.delete_confirmation_template or [
Modified: django/trunk/django/contrib/admin/sites.py
===================================================================
--- django/trunk/django/contrib/admin/sites.py 2008-08-23 03:26:01 UTC (rev
8473)
+++ django/trunk/django/contrib/admin/sites.py 2008-08-23 04:00:15 UTC (rev
8474)
@@ -170,6 +170,8 @@
else:
if '/' in url:
return self.model_page(request, *url.split('/', 2))
+ else:
+ return self.app_index(request, url)
raise http.Http404('The requested admin page does not exist.')
@@ -315,6 +317,7 @@
else:
app_dict[app_label] = {
'name': app_label.title(),
+ 'app_url': app_label,
'has_module_perms': has_module_perms,
'models': [model_dict],
}
@@ -360,8 +363,45 @@
return render_to_response(self.login_template or 'admin/login.html',
context,
context_instance=template.RequestContext(request)
)
+
+ def app_index(self, request, app_label):
+ user = request.user
+ has_module_perms = user.has_module_perms(app_label)
+ app_dict = {}
+ for model, model_admin in self._registry.items():
+ if app_label == model._meta.app_label:
+ if has_module_perms:
+ perms = {
+ 'add': user.has_perm("%s.%s" % (app_label,
model._meta.get_add_permission())),
+ 'change': user.has_perm("%s.%s" % (app_label,
model._meta.get_change_permission())),
+ 'delete': user.has_perm("%s.%s" % (app_label,
model._meta.get_delete_permission())),
+ }
+ # Check whether user has any perm for this module.
+ # If so, add the module to the model_list.
+ if True in perms.values():
+ model_dict = {
+ 'name': capfirst(model._meta.verbose_name_plural),
+ 'admin_url': '%s/' % model.__name__.lower(),
+ 'perms': perms,
+ }
+ if app_dict:
+ app_dict['models'].append(model_dict),
+ else:
+ app_dict = {
+ 'name': app_label.title(),
+ 'app_url': '',
+ 'has_module_perms': has_module_perms,
+ 'models': [model_dict],
+ }
+ if not app_dict:
+ raise http.Http404('The requested admin page does not
exist.')
+ # Sort the models alphabetically within each app.
+ app_dict['models'].sort(lambda x, y: cmp(x['name'], y['name']))
+ return render_to_response('admin/app_index.html', {
+ 'title': _('%s administration' % capfirst(app_label)),
+ 'app_list': [app_dict]
+ }, context_instance=template.RequestContext(request))
-
# This global object represents the default admin site, for the common case.
# You can instantiate AdminSite in your own code to create a custom admin site.
site = AdminSite()
Added: django/trunk/django/contrib/admin/templates/admin/app_index.html
===================================================================
--- django/trunk/django/contrib/admin/templates/admin/app_index.html
(rev 0)
+++ django/trunk/django/contrib/admin/templates/admin/app_index.html
2008-08-23 04:00:15 UTC (rev 8474)
@@ -0,0 +1,15 @@
+{% extends "admin/index.html" %}
+{% load i18n %}
+
+{% if not is_popup %}
+
+{% block breadcrumbs %}
+<div class="breadcrumbs"><a href="../">
+{% trans "Home" %}</a> ›
+{% for app in app_list %}
+{% blocktrans with app.name as name %}{{ name }}{% endblocktrans %}
+{% endfor %}</div>{% endblock %}
+
+{% endif %}
+
+{% block sidebar %}{% endblock %}
\ No newline at end of file
Modified: django/trunk/django/contrib/admin/templates/admin/change_form.html
===================================================================
--- django/trunk/django/contrib/admin/templates/admin/change_form.html
2008-08-23 03:26:01 UTC (rev 8473)
+++ django/trunk/django/contrib/admin/templates/admin/change_form.html
2008-08-23 04:00:15 UTC (rev 8474)
@@ -15,6 +15,7 @@
{% block breadcrumbs %}{% if not is_popup %}
<div class="breadcrumbs">
<a href="../../../">{% trans "Home" %}</a> ›
+ <a href="../../">{{ app_label|capfirst|escape }}</a> ›
<a href="../">{{ opts.verbose_name_plural|capfirst }}</a> ›
{% if add %}{% trans "Add" %} {{ opts.verbose_name }}{% else %}{{
original|truncatewords:"18" }}{% endif %}
</div>
Modified: django/trunk/django/contrib/admin/templates/admin/change_list.html
===================================================================
--- django/trunk/django/contrib/admin/templates/admin/change_list.html
2008-08-23 03:26:01 UTC (rev 8473)
+++ django/trunk/django/contrib/admin/templates/admin/change_list.html
2008-08-23 04:00:15 UTC (rev 8474)
@@ -5,7 +5,7 @@
{% block bodyclass %}change-list{% endblock %}
-{% if not is_popup %}{% block breadcrumbs %}<div class="breadcrumbs"><a
href="../../">{% trans "Home" %}</a> › {{
cl.opts.verbose_name_plural|capfirst|escape }}</div>{% endblock %}{% endif %}
+{% if not is_popup %}{% block breadcrumbs %}<div class="breadcrumbs"><a
href="../../">{% trans "Home" %}</a> › <a href="../">{{
app_label|capfirst|escape }}</a> › {{
cl.opts.verbose_name_plural|capfirst|escape }}</div>{% endblock %}{% endif %}
{% block coltype %}flex{% endblock %}
Modified:
django/trunk/django/contrib/admin/templates/admin/delete_confirmation.html
===================================================================
--- django/trunk/django/contrib/admin/templates/admin/delete_confirmation.html
2008-08-23 03:26:01 UTC (rev 8473)
+++ django/trunk/django/contrib/admin/templates/admin/delete_confirmation.html
2008-08-23 04:00:15 UTC (rev 8474)
@@ -4,6 +4,7 @@
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="../../../../">{% trans "Home" %}</a> ›
+ <a href="../../../">{{ app_label|capfirst|escape }}</a> ›
<a href="../../">{{ opts.verbose_name_plural|capfirst }}</a> ›
<a href="../">{{ object|escape|truncatewords:"18" }}</a> ›
{% trans 'Delete' %}
Modified: django/trunk/django/contrib/admin/templates/admin/index.html
===================================================================
--- django/trunk/django/contrib/admin/templates/admin/index.html
2008-08-23 03:26:01 UTC (rev 8473)
+++ django/trunk/django/contrib/admin/templates/admin/index.html
2008-08-23 04:00:15 UTC (rev 8474)
@@ -16,7 +16,7 @@
{% for app in app_list %}
<div class="module">
<table summary="{% blocktrans with app.name as name %}Models available
in the {{ name }} application.{% endblocktrans %}">
- <caption>{% blocktrans with app.name as name %}{{ name }}{%
endblocktrans %}</caption>
+ <caption><a href="{{ app.app_url }}" class="section">{% blocktrans
with app.name as name %}{{ name }}{% endblocktrans %}</a></caption>
{% for model in app.models %}
<tr>
{% if model.perms.change %}
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---