138 params: a dict with params for this View |
138 params: a dict with params for this View |
139 kwargs: not used for create() |
139 kwargs: not used for create() |
140 """ |
140 """ |
141 |
141 |
142 # Create page is an edit page with no key fields |
142 # Create page is an edit page with no key fields |
143 kwargs = {} |
143 empty_kwargs = {} |
144 fields = self._logic.getKeyFieldNames() |
144 fields = self._logic.getKeyFieldNames() |
145 for field in fields: |
145 for field in fields: |
146 kwargs[field] = None |
146 empty_kwargs[field] = None |
147 |
147 |
148 request.path = helper.requests.replaceSuffix(request.path, |
148 request.path = helper.requests.replaceSuffix(request.path, |
149 old_suffix='create') |
149 old_suffix='create') |
150 request.path = helper.requests.replaceSuffix(request.path, |
150 request.path = helper.requests.replaceSuffix(request.path, |
151 old_suffix='edit', |
151 old_suffix='edit', |
152 new_suffix='edit') |
152 new_suffix='edit') |
153 |
153 |
154 return self.edit(request, page_name=page_name, params=params, **kwargs) |
154 if not kwargs: |
155 |
155 return self.edit(request, page_name=page_name, params=params, **empty_kwargs) |
156 def edit(self, request, page_name=None, params=None, **kwargs): |
156 else: |
|
157 return self.edit(request, page_name=page_name, params=params, seed=kwargs) |
|
158 |
|
159 def edit(self, request, page_name=None, params=None, seed=None, **kwargs): |
157 """Displays the edit page for the entity specified by **kwargs |
160 """Displays the edit page for the entity specified by **kwargs |
158 |
161 |
159 Args: |
162 Args: |
160 request: the standard Django HTTP request object |
163 request: the standard Django HTTP request object |
161 page: a soc.logic.site.page.Page object which is abstraction |
164 page: a soc.logic.site.page.Page object which is abstraction |
178 try: |
181 try: |
179 if all(kwargs.values()): |
182 if all(kwargs.values()): |
180 key_fields = self._logic.getKeyFieldsFromDict(kwargs) |
183 key_fields = self._logic.getKeyFieldsFromDict(kwargs) |
181 entity = self._logic.getIfFields(key_fields) |
184 entity = self._logic.getIfFields(key_fields) |
182 except soc.logic.out_of_band.ErrorResponse, error: |
185 except soc.logic.out_of_band.ErrorResponse, error: |
183 template = params['public_template'] |
186 if not seed: |
184 error.message = error.message + self.DEF_CREATE_NEW_ENTITY_MSG % { |
187 template = params['public_template'] |
185 'entity_type_lower' : params['name'].lower(), |
188 error.message = error.message + self.DEF_CREATE_NEW_ENTITY_MSG % { |
186 'entity_type' : params['name'], |
189 'entity_type_lower' : params['name'].lower(), |
187 'create' : params['create_redirect'] |
190 'entity_type' : params['name'], |
188 } |
191 'create' : params['create_redirect'] |
189 return simple.errorResponse(request, page_name, error, template, context) |
192 } |
|
193 return simple.errorResponse(request, page_name, error, template, context) |
190 |
194 |
191 if request.method == 'POST': |
195 if request.method == 'POST': |
192 return self.editPost(request, entity, context, params=params) |
196 return self.editPost(request, entity, context, params) |
193 else: |
197 else: |
194 return self.editGet(request, entity, context, params=params) |
198 return self.editGet(request, entity, context, seed, params) |
195 |
199 |
196 def editPost(self, request, entity, context, params=None): |
200 def editPost(self, request, entity, context, params): |
197 """Same as edit, but on POST |
201 """Same as edit, but on POST |
198 """ |
202 """ |
199 |
203 |
200 params = dicts.merge(params, self._params) |
204 params = dicts.merge(params, self._params) |
201 |
205 |
230 # (causes 'Profile saved' message to be displayed) |
234 # (causes 'Profile saved' message to be displayed) |
231 return helper.responses.redirectToChangedSuffix( |
235 return helper.responses.redirectToChangedSuffix( |
232 request, old_suffix, suffix, |
236 request, old_suffix, suffix, |
233 params=page_params) |
237 params=page_params) |
234 |
238 |
235 def editGet(self, request, entity, context, params=None): |
239 def editGet(self, request, entity, context, seed, params): |
236 """Same as edit, but on GET |
240 """Same as edit, but on GET |
237 """ |
241 """ |
238 |
242 |
239 params = dicts.merge(params, self._params) |
243 params = dicts.merge(params, self._params) |
240 suffix = self._logic.getKeySuffix(entity) |
244 suffix = self._logic.getKeySuffix(entity) |
256 form = params['edit_form'](instance=entity) |
260 form = params['edit_form'](instance=entity) |
257 if 'key_name' in form.fields: |
261 if 'key_name' in form.fields: |
258 form.fields['key_name'].initial = entity.key().name() |
262 form.fields['key_name'].initial = entity.key().name() |
259 self._editGet(request, entity, form) |
263 self._editGet(request, entity, form) |
260 else: |
264 else: |
261 form = params['create_form']() |
265 if seed: |
|
266 form = params['create_form'](initial=seed) |
|
267 else: |
|
268 form = params['create_form']() |
262 |
269 |
263 return self._constructResponse(request, entity, context, form, params) |
270 return self._constructResponse(request, entity, context, form, params) |
264 |
271 |
265 def list(self, request, page_name=None, params=None): |
272 def list(self, request, page_name=None, params=None): |
266 """Displays the list page for the entity type |
273 """Displays the list page for the entity type |