app/soc/views/helper/params.py
changeset 613 4880ffa9f3ba
parent 611 2ec30182e5f1
child 616 580b1c21b808
equal deleted inserted replaced
612:3cca81b1e5a1 613:4880ffa9f3ba
    25 from django import forms
    25 from django import forms
    26 from django.utils.translation import ugettext_lazy
    26 from django.utils.translation import ugettext_lazy
    27 
    27 
    28 from soc.logic import cleaning
    28 from soc.logic import cleaning
    29 from soc.logic import dicts
    29 from soc.logic import dicts
       
    30 from soc.models import linkable
    30 from soc.views import helper
    31 from soc.views import helper
    31 from soc.views.helper import access
    32 from soc.views.helper import access
    32 from soc.views.helper import dynaform
    33 from soc.views.helper import dynaform
    33 from soc.views.helper import redirects
    34 from soc.views.helper import redirects
    34 
    35 
    90    ('/%s/list', 'List %(name_plural)s', 'list'),
    91    ('/%s/list', 'List %(name_plural)s', 'list'),
    91   ]
    92   ]
    92   new_params['sidebar_additional'] = []
    93   new_params['sidebar_additional'] = []
    93 
    94 
    94   new_params['key_fields_prefix'] = []
    95   new_params['key_fields_prefix'] = []
       
    96   new_params['link_id_arg_pattern'] = linkable.LINK_ID_PATTERN_CORE
       
    97   new_params['link_id_pattern_core'] = linkable.LINK_ID_ARG_PATTERN
    95 
    98 
    96   new_params['django_patterns'] = None
    99   new_params['django_patterns'] = None
    97   new_params['django_patterns_defaults'] = [
   100   new_params['django_patterns_defaults'] = [
    98       (r'^%(url_name)s/show/%(key_fields)s$',
   101       (r'^%(url_name)s/show/%(key_fields)s$',
    99           'soc.views.models.%s.public', 'Show %(name_short)s'),
   102           'soc.views.models.%s.public', 'Show %(name_short)s'),
   168     params['create_form'] = getCreateForm(params)
   171     params['create_form'] = getCreateForm(params)
   169 
   172 
   170   if not 'edit_form' in params:
   173   if not 'edit_form' in params:
   171     params['edit_form'] = getEditForm(params)
   174     params['edit_form'] = getEditForm(params)
   172 
   175 
       
   176   if not 'key_fields_pattern' in params:
       
   177     params['key_fields_pattern'] = getKeyFieldsPattern(params)
       
   178 
   173   return params
   179   return params
   174 
   180 
   175 def getCreateForm(params):
   181 def getCreateForm(params):
   176   """Constructs a new CreateForm using params
   182   """Constructs a new CreateForm using params
   177 
   183 
   211     dynaexclude = params['edit_dynaexclude'],
   217     dynaexclude = params['edit_dynaexclude'],
   212     dynafields = params['edit_dynafields'],
   218     dynafields = params['edit_dynafields'],
   213     )
   219     )
   214 
   220 
   215   return edit_form
   221   return edit_form
       
   222 
       
   223 def getKeyFieldsPattern(params):
       
   224   """Returns the Django pattern for this View's entity
       
   225 
       
   226   Params usage:
       
   227     key_fields_prefix: The key_fields_prefix value is used as the
       
   228     first part of the returned pattern.
       
   229   """
       
   230 
       
   231   names = params['logic'].getKeyFieldNames()
       
   232   patterns = params['key_fields_prefix']
       
   233 
       
   234   for name in names:
       
   235     pattern = r'(?P<%s>%s)' % (name, linkable.LINK_ID_PATTERN_CORE)
       
   236     patterns.append(pattern)
       
   237 
       
   238   result = '/'.join(patterns)
       
   239   return result