app/soc/views/helper/params.py
changeset 778 bc13cd968946
parent 761 da4d499a9598
child 799 30a912906a57
equal deleted inserted replaced
777:16dcdb8f3357 778:bc13cd968946
    66       constructing the create_dynaexclude value.
    66       constructing the create_dynaexclude value.
    67     logic: The logic value is used as argument to clean_new_link_id
    67     logic: The logic value is used as argument to clean_new_link_id
    68       from the cleaning module.
    68       from the cleaning module.
    69   """
    69   """
    70 
    70 
       
    71   logic = params['logic']
       
    72 
    71   rights = {}
    73   rights = {}
    72   rights['unspecified'] = []
    74   rights['unspecified'] = []
    73   rights['any_access'] = [access.checkIsLoggedIn]
    75   rights['any_access'] = [access.checkIsLoggedIn]
    74   rights['show'] = [access.checkIsUser]
    76   rights['show'] = [access.checkIsUser]
    75   rights['create'] = [access.checkIsDeveloper]
    77   rights['create'] = [access.checkIsDeveloper]
    80   if 'rights' in params:
    82   if 'rights' in params:
    81     rights = dicts.merge(params['rights'], rights)
    83     rights = dicts.merge(params['rights'], rights)
    82 
    84 
    83   new_params = {}
    85   new_params = {}
    84   new_params['rights'] = rights
    86   new_params['rights'] = rights
    85   new_params['scope_logic'] = params['logic'].getScopeLogic()
    87   new_params['scope_logic'] = logic.getScopeLogic()
    86 
    88 
    87   # Do not expand edit_redirect to allow it to be overriden without suffix
    89   # Do not expand edit_redirect to allow it to be overriden without suffix
    88   new_params['edit_redirect'] = '/%(url_name)s/edit/%(suffix)s'
    90   new_params['edit_redirect'] = '/%(url_name)s/edit/%(suffix)s'
    89   new_params['missing_redirect'] = '/%(url_name)s/create' % params
    91   new_params['missing_redirect'] = '/%(url_name)s/create' % params
    90   new_params['delete_redirect'] = '/%(url_name)s/list' % params
    92   new_params['delete_redirect'] = '/%(url_name)s/list' % params
   156       }
   158       }
   157 
   159 
   158   new_params['dynabase'] = helper.forms.BaseForm
   160   new_params['dynabase'] = helper.forms.BaseForm
   159 
   161 
   160   create_dynafields = {
   162   create_dynafields = {
   161       'clean_link_id': cleaning.clean_new_link_id(params['logic']),
   163       'clean_link_id': cleaning.clean_new_link_id(logic),
   162       'clean_feed_url': cleaning.clean_feed_url,
   164       'clean_feed_url': cleaning.clean_feed_url,
   163       }
   165       }
   164   create_dynafields.update(params.get('create_extra_dynafields', {}))
   166   create_dynafields.update(params.get('create_extra_dynafields', {}))
   165 
   167 
   166   new_params['create_dynainclude'] = [] + params.get('extra_dynainclude', [])
   168   new_params['create_dynainclude'] = [] + params.get('extra_dynainclude', [])
   181   params = dicts.merge(params, new_params)
   183   params = dicts.merge(params, new_params)
   182 
   184 
   183   # These need to be constructed separately, because they require
   185   # These need to be constructed separately, because they require
   184   # parameters that can be defined either in params, or new_params.
   186   # parameters that can be defined either in params, or new_params.
   185   if not 'create_form' in params:
   187   if not 'create_form' in params:
   186     params['create_form'] = getCreateForm(params)
   188     params['create_form'] = getCreateForm(params, logic.getModel())
   187 
   189 
   188   if not 'edit_form' in params:
   190   if not 'edit_form' in params:
   189     params['edit_form'] = getEditForm(params)
   191     params['edit_form'] = getEditForm(params, params['create_form'])
   190 
   192 
   191   if not 'key_fields_pattern' in params:
   193   if not 'key_fields_pattern' in params:
   192     params['key_fields_pattern'] = getKeyFieldsPattern(params)
   194     params['key_fields_pattern'] = getKeyFieldsPattern(params)
   193 
   195 
   194   return params
   196   return params
   195 
   197 
   196 
   198 
   197 def getCreateForm(params):
   199 def getCreateForm(params, model):
   198   """Constructs a new CreateForm using params.
   200   """Constructs a new CreateForm using params.
   199 
   201 
   200   Params usage:
   202   Params usage:
   201     dynabase: The dynabase value is used as the base argument to
   203     dynabase: The dynabase value is used as the base argument to
   202       dynaform.newDynaForm.
   204       dynaform.newDynaForm.
   206     create_dynafields: same as dynabase, but as dynafields argument
   208     create_dynafields: same as dynabase, but as dynafields argument
   207   """
   209   """
   208 
   210 
   209   create_form = dynaform.newDynaForm(
   211   create_form = dynaform.newDynaForm(
   210     dynabase = params['dynabase'],
   212     dynabase = params['dynabase'],
   211     dynamodel = params['logic'].getModel(),
   213     dynamodel = model,
   212     dynainclude = params['create_dynainclude'],
   214     dynainclude = params['create_dynainclude'],
   213     dynaexclude = params['create_dynaexclude'],
   215     dynaexclude = params['create_dynaexclude'],
   214     dynafields = params['create_dynafields'],
   216     dynafields = params['create_dynafields'],
   215     )
   217     )
   216 
   218 
   217   return create_form
   219   return create_form
   218 
   220 
   219 
   221 
   220 def getEditForm(params):
   222 def getEditForm(params, base_form):
   221   """Constructs a new EditForm using params.
   223   """Constructs a new EditForm using params.
   222 
   224 
   223   Params usage:
   225   Params usage:
   224     create_form: The dynabase value is used as the dynaform argument
   226     create_form: The dynabase value is used as the dynaform argument
   225       to dyanform.extendDynaForm.
   227       to dyanform.extendDynaForm.
   227     edit_dynaexclude: same as create_form, but as dynaexclude argument
   229     edit_dynaexclude: same as create_form, but as dynaexclude argument
   228     edit_dynafields: same as create_form, but as dynafields argument
   230     edit_dynafields: same as create_form, but as dynafields argument
   229   """
   231   """
   230 
   232 
   231   edit_form = dynaform.extendDynaForm(
   233   edit_form = dynaform.extendDynaForm(
   232     dynaform = params['create_form'],
   234     dynaform = base_form,
   233     dynainclude = params['edit_dynainclude'],
   235     dynainclude = params['edit_dynainclude'],
   234     dynaexclude = params['edit_dynaexclude'],
   236     dynaexclude = params['edit_dynaexclude'],
   235     dynafields = params['edit_dynafields'],
   237     dynafields = params['edit_dynafields'],
   236     )
   238     )
   237 
   239