app/soc/views/models/base.py
changeset 613 4880ffa9f3ba
parent 612 3cca81b1e5a1
child 614 53a3e46fc512
equal deleted inserted replaced
612:3cca81b1e5a1 613:4880ffa9f3ba
    33 import soc.views.helper.responses
    33 import soc.views.helper.responses
    34 import soc.views.helper.params
    34 import soc.views.helper.params
    35 
    35 
    36 from soc.logic import dicts
    36 from soc.logic import dicts
    37 from soc.logic import models
    37 from soc.logic import models
    38 from soc.models import linkable
       
    39 from soc.views import helper
    38 from soc.views import helper
    40 from soc.views import out_of_band
    39 from soc.views import out_of_band
    41 from soc.views.helper import access
    40 from soc.views.helper import access
    42 from soc.views.helper import forms
    41 from soc.views.helper import forms
       
    42 from soc.views import sitemap
    43 
    43 
    44 
    44 
    45 class View(object):
    45 class View(object):
    46   """Views for entity classes.
    46   """Views for entity classes.
    47 
    47 
   541     else:
   541     else:
   542       template = params['create_template']
   542       template = params['create_template']
   543 
   543 
   544     return helper.responses.respond(request, template, context)
   544     return helper.responses.respond(request, template, context)
   545 
   545 
   546   def getKeyFieldsPattern(self, params):
       
   547     """Returns the Django pattern for this View's entity
       
   548 
       
   549     Params usage:
       
   550       key_fields_prefix: The key_fields_prefix value is used as the
       
   551       first part of the returned pattern.
       
   552     """
       
   553 
       
   554     names = self._logic.getKeyFieldNames()
       
   555     patterns = params['key_fields_prefix']
       
   556 
       
   557     for name in names:
       
   558       pattern = r'(?P<%s>%s)' % (name, linkable.LINK_ID_PATTERN_CORE)
       
   559       patterns.append(pattern)
       
   560 
       
   561     result = '/'.join(patterns)
       
   562     return result
       
   563 
       
   564   def _getSidebarItems(self, params):
   546   def _getSidebarItems(self, params):
   565     """Retrieves a list of sidebar entries for this view
   547     """Retrieves a list of sidebar entries for this view
   566 
   548 
   567     Params usage:
   549     Params usage:
   568       The params dictionary is provided to the menu_text's format.
   550       The params dictionary is provided to the menu_text's format.
   678     Args:
   660     Args:
   679       params: a dict with params for this View
   661       params: a dict with params for this View
   680     """
   662     """
   681 
   663 
   682     params = dicts.merge(params, self._params)
   664     params = dicts.merge(params, self._params)
   683 
   665     return sitemap.sitemap.getDjangoURLPatterns(params)
   684     # Return the found result
       
   685     if params['django_patterns']:
       
   686       return params['django_patterns']
       
   687 
       
   688     # Construct defaults manualy
       
   689     default_patterns = params['django_patterns_defaults']
       
   690     key_fields_pattern = self.getKeyFieldsPattern(params)
       
   691 
       
   692     patterns = []
       
   693 
       
   694     for url, module, name in default_patterns:
       
   695       name = name % params
       
   696       module = module % params['module_name']
       
   697 
       
   698       url = url % {
       
   699           'url_name': params['url_name'],
       
   700           'lnp': linkable.LINK_ID_ARG_PATTERN,
       
   701           'ulnp': linkable.LINK_ID_PATTERN_CORE,
       
   702           'key_fields': key_fields_pattern,
       
   703           }
       
   704 
       
   705       kwargs = {'page_name': name}
       
   706 
       
   707       item = (url, module, kwargs, name)
       
   708       patterns.append(item)
       
   709 
       
   710     return patterns