244 'clean_link_id': cleaning.clean_link_id('link_id'), |
247 'clean_link_id': cleaning.clean_link_id('link_id'), |
245 'clean_feed_url': cleaning.clean_feed_url, |
248 'clean_feed_url': cleaning.clean_feed_url, |
246 } |
249 } |
247 create_dynaproperties.update(params.get('create_extra_dynaproperties', {})) |
250 create_dynaproperties.update(params.get('create_extra_dynaproperties', {})) |
248 |
251 |
|
252 # dynafields override any dynaproperties |
|
253 create_dynafields = getDynaFields(params.get('create_dynafields', {})) |
|
254 create_dynaproperties = dicts.merge(create_dynafields, create_dynaproperties) |
|
255 |
249 new_params['references'] = [] |
256 new_params['references'] = [] |
250 new_params['create_dynainclude'] = [] + params.get('extra_dynainclude', []) |
257 new_params['create_dynainclude'] = [] + params.get('extra_dynainclude', []) |
251 new_params['create_dynaexclude'] = ['scope', 'scope_path'] + \ |
258 new_params['create_dynaexclude'] = ['scope', 'scope_path'] + \ |
252 params.get('extra_dynaexclude', []) |
259 params.get('extra_dynaexclude', []) |
253 new_params['create_dynaproperties'] = create_dynaproperties |
260 new_params['create_dynaproperties'] = create_dynaproperties |
256 'clean_link_id': cleaning.clean_link_id('link_id'), |
263 'clean_link_id': cleaning.clean_link_id('link_id'), |
257 'link_id': forms.CharField(widget=helper.widgets.ReadOnlyInput()), |
264 'link_id': forms.CharField(widget=helper.widgets.ReadOnlyInput()), |
258 } |
265 } |
259 edit_dynaproperties.update(params.get('edit_extra_dynaproperties', {})) |
266 edit_dynaproperties.update(params.get('edit_extra_dynaproperties', {})) |
260 |
267 |
|
268 # dynafields override any dynaproperties |
|
269 edit_dynafields = getDynaFields(params.get('edit_dynafields', {})) |
|
270 edit_dynaproperties = dicts.merge(edit_dynafields, edit_dynaproperties) |
|
271 |
261 new_params['edit_dynainclude'] = None |
272 new_params['edit_dynainclude'] = None |
262 new_params['edit_dynaexclude'] = None |
273 new_params['edit_dynaexclude'] = None |
263 new_params['edit_dynaproperties'] = edit_dynaproperties |
274 new_params['edit_dynaproperties'] = edit_dynaproperties |
264 |
275 |
265 params = dicts.merge(params, new_params) |
276 params = dicts.merge(params, new_params) |
280 |
291 |
281 # merge already done by access.Checker |
292 # merge already done by access.Checker |
282 params['rights'] = rights |
293 params['rights'] = rights |
283 |
294 |
284 return params |
295 return params |
|
296 |
|
297 |
|
298 def getDynaFields(fields): |
|
299 """Constructs a new DynaField using params. |
|
300 |
|
301 Args: |
|
302 params: the params dictionary used to extract the dyanfields |
|
303 param_name: the name of the parameter to use |
|
304 """ |
|
305 |
|
306 dynafields = {} |
|
307 |
|
308 # generate the dynafields |
|
309 for field in fields: |
|
310 base = field.pop('base') |
|
311 name = field.pop('name') |
|
312 passthrough = field.pop('passthrough', DEF_FIELD_INIT_PARAMS) |
|
313 |
|
314 dynafield = dynaform.newDynaField(field, base, passthrough) |
|
315 dynafields[name] = dynafield() |
|
316 |
|
317 return dynafields |
285 |
318 |
286 |
319 |
287 def getCreateForm(params, model): |
320 def getCreateForm(params, model): |
288 """Constructs a new CreateForm using params. |
321 """Constructs a new CreateForm using params. |
289 |
322 |