changeset 176:824a27b7f869

Moved the display of the 'administer' sidebar link view logic from the base template to sections.py
author Atul Varma <varmaa@toolness.com>
date Wed, 16 Apr 2008 19:00:21 -0700
parents 5d57a0f3e820
children 1a7d4c9cbf70
files personasbackend/personas/sections.py personasbackend/personas/templates/personas/base.html
diffstat 2 files changed, 23 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/personasbackend/personas/sections.py	Wed Apr 16 17:41:23 2008 -0700
+++ b/personasbackend/personas/sections.py	Wed Apr 16 19:00:21 2008 -0700
@@ -21,13 +21,29 @@
                 section.parents.append( curr_parent )
                 curr_section = curr_parent
 
+    def filter_sidebar_entries( self, user ):
+        entries = []
+        for section in self.sidebar_entries:
+            include = False
+            if section.needs_perm:
+                if ( user.is_authenticated() and
+                     user.has_perm(section.needs_perm) ):
+                    include = True
+            else:
+                include = True
+            if include:
+                entries.append( section )
+        return entries
+
 class Section( object ):
     def __init__( self, name, view, in_sidebar = False,
-                  parent_name = None ):
+                  parent_name = None,
+                  needs_perm = None ):
         self.name = name
         self.view = view
         self.in_sidebar = in_sidebar
         self.parent_name = parent_name
+        self.needs_perm = needs_perm
 
         # This will be filled out by the parent Sections object.
         self.parents = []
@@ -47,6 +63,11 @@
              "personasbackend.personas.views.new_view",
              parent_name = "Home",
              in_sidebar = True ),
+    Section( "Administer",
+             "django.contrib.admin.views.main.index",
+             parent_name = "Home",
+             in_sidebar = True,
+             needs_perm = "personas.can_publish" ),
     Section( "Edit",
              "personasbackend.personas.views.edit_view",
              parent_name = "Home" ),
@@ -64,6 +85,6 @@
                           viewfunc.__name__] )
     return {
         "site_name" : Site.objects.get_current().name,
-        "sidebar_entries" : sections.sidebar_entries,
+        "sidebar_entries" : sections.filter_sidebar_entries( request.user ),
         "section" : sections.views.get( viewname, None )
         }
--- a/personasbackend/personas/templates/personas/base.html	Wed Apr 16 17:41:23 2008 -0700
+++ b/personasbackend/personas/templates/personas/base.html	Wed Apr 16 19:00:21 2008 -0700
@@ -36,10 +36,6 @@
               <li><a href="{{ entry.url }}">{{ entry.name }}</a></li>
               {% endifequal %}
               {% endfor %}
-              {% if perms.personas.can_publish %}
-              <li><a href="{% url django.contrib.admin.views.main.index %}"
-                     >Administer</a></li>
-              {% endif %}
             </ul>
           </div>
           {% if user.is_authenticated %}