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> &rsaquo; 
+{% 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> &rsaquo;
+     <a href="../../">{{ app_label|capfirst|escape }}</a> &rsaquo; 
      <a href="../">{{ opts.verbose_name_plural|capfirst }}</a> &rsaquo;
      {% 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> &rsaquo; {{ 
cl.opts.verbose_name_plural|capfirst|escape }}</div>{% endblock %}{% endif %}
+{% if not is_popup %}{% block breadcrumbs %}<div class="breadcrumbs"><a 
href="../../">{% trans "Home" %}</a> &rsaquo; <a href="../">{{ 
app_label|capfirst|escape }}</a> &rsaquo; {{ 
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> &rsaquo;
+     <a href="../../../">{{ app_label|capfirst|escape }}</a> &rsaquo; 
      <a href="../../">{{ opts.verbose_name_plural|capfirst }}</a> &rsaquo;
      <a href="../">{{ object|escape|truncatewords:"18" }}</a> &rsaquo;
      {% 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to