view PersonasBackendTemp/personas/sections.py @ 126:cb128e025ae9

Temporarily changing name of directory so it can be ultimately renamed to 'personasbackend'.
author Atul Varma <varmaa@toolness.com>
date Wed, 02 Apr 2008 11:59:36 -0700
parents PersonasBackend/personas/sections.py@ce2e1efb1eca
children
line wrap: on
line source

from django.core import urlresolvers
from django.contrib.sites.models import Site

class Sections( object ):
    def __init__( self, *sections ):
        self.sections = sections
        self.sidebar_entries = []
        self.views = {}
        self.names = {}
        for section in self.sections:
            if section.in_sidebar:
                self.sidebar_entries.append( section )
            assert section.name not in self.names
            self.names[section.name] = section
            assert section.view not in self.views
            self.views[section.view] = section

            curr_section = section
            while curr_section.parent_name:
                curr_parent = self.names[curr_section.parent_name]
                section.parents.append( curr_parent )
                curr_section = curr_parent

class Section( object ):
    def __init__( self, name, view, in_sidebar = False,
                  parent_name = None ):
        self.name = name
        self.view = view
        self.in_sidebar = in_sidebar
        self.parent_name = parent_name

        # This will be filled out by the parent Sections object.
        self.parents = []

    def url( self ):
        return urlresolvers.reverse( self.view )

sections = Sections(
    Section( "Home",
             "PersonasBackend.personas.views.home_view",
             in_sidebar = True ),
    Section( "Browse",
             "PersonasBackend.personas.views.list_view",
             parent_name = "Home",
             in_sidebar = True ),
    Section( "Create",
             "PersonasBackend.personas.views.new_view",
             parent_name = "Home",
             in_sidebar = True ),
    Section( "Edit",
             "PersonasBackend.personas.views.edit_view",
             parent_name = "Home" ),
    Section( "Log in",
             "django.contrib.auth.views.login",
             parent_name = "Home" ),
    Section( "Log out",
             "django.contrib.auth.views.logout",
             parent_name = "Home" )
    )

def context( request ):
    viewfunc, args, kwargs = urlresolvers.resolve( request.path )
    viewname = ".".join( [viewfunc.__module__,
                          viewfunc.__name__] )
    return {
        "site_name" : Site.objects.get_current().name,
        "sidebar_entries" : sections.sidebar_entries,
        "section" : sections.views.get( viewname, None )
        }