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 |