31 import soc.views.helper.responses |
31 import soc.views.helper.responses |
32 import soc.views.out_of_band |
32 import soc.views.out_of_band |
33 |
33 |
34 from soc.logic import dicts |
34 from soc.logic import dicts |
35 from soc.logic import models |
35 from soc.logic import models |
36 from soc.logic import validate |
|
37 from soc.views import simple |
36 from soc.views import simple |
38 from soc.views import helper |
37 from soc.views import helper |
39 from soc.views.helper import access |
38 from soc.views.helper import access |
40 |
39 |
41 |
40 |
105 entity = None |
104 entity = None |
106 |
105 |
107 try: |
106 try: |
108 entity = self._logic.getIfFields(**kwargs) |
107 entity = self._logic.getIfFields(**kwargs) |
109 except soc.logic.out_of_band.ErrorResponse, error: |
108 except soc.logic.out_of_band.ErrorResponse, error: |
110 template = soc._params['public_template'] |
109 template = _params['public_template'] |
111 return simple.errorResponse(request, error, template, context) |
110 return simple.errorResponse(request, error, template, context) |
112 |
111 |
113 if not entity: |
112 if not entity: |
114 #TODO: Change this into a proper redirect |
113 #TODO: Change this into a proper redirect |
115 return http.HttpResponseRedirect('/') |
114 return http.HttpResponseRedirect('/') |
191 entity = self._logic.updateOrCreateFromFields(fields, **keys) |
190 entity = self._logic.updateOrCreateFromFields(fields, **keys) |
192 |
191 |
193 if not entity: |
192 if not entity: |
194 return http.HttpResponseRedirect('/') |
193 return http.HttpResponseRedirect('/') |
195 |
194 |
196 params=self._params['edit_params'] |
195 params = self._params['edit_params'] |
197 #TODO(SRabbelier) Construct a suffix |
196 # TODO(SRabbelier): Construct a suffix |
198 suffix = None |
197 suffix = None |
199 |
198 |
200 # redirect to (possibly new) location of the entity |
199 # redirect to (possibly new) location of the entity |
201 # (causes 'Profile saved' message to be displayed) |
200 # (causes 'Profile saved' message to be displayed) |
202 return helper.responses.redirectToChangedSuffix( |
201 return helper.responses.redirectToChangedSuffix( |
204 params=params) |
203 params=params) |
205 |
204 |
206 def editGet(self, request, entity, context): |
205 def editGet(self, request, entity, context): |
207 """Same as edit, but on GET |
206 """Same as edit, but on GET |
208 """ |
207 """ |
209 #TODO(SRabbelier) Construct a suffix |
208 # TODO(SRabbelier): Construct a suffix |
210 suffix = None |
209 suffix = None |
211 |
210 |
212 # Remove the params from the request, this is relevant only if |
211 # Remove the params from the request, this is relevant only if |
213 # someone bookmarked a POST page. |
212 # someone bookmarked a POST page. |
214 is_self_referrer = helper.requests.isReferrerSelf(request, suffix=suffix) |
213 is_self_referrer = helper.requests.isReferrerSelf(request, suffix=suffix) |
215 if request.GET.get(DEF_SUBMIT_MSG_PARAM_NAME): |
214 if request.GET.get(self.DEF_SUBMIT_MSG_PARAM_NAME): |
216 if (not entity) or (not is_self_referrer): |
215 if (not entity) or (not is_self_referrer): |
217 return http.HttpResponseRedirect(request.path) |
216 return http.HttpResponseRedirect(request.path) |
218 |
217 |
219 if entity: |
218 if entity: |
220 # Note: no message will be displayed if parameter is not present |
219 # Note: no message will be displayed if parameter is not present |
221 context['notice'] = helper.requests.getSingleIndexedParamValue( |
220 context['notice'] = helper.requests.getSingleIndexedParamValue( |
222 request, DEF_SUBMIT_MSG_PARAM_NAME, |
221 request, self.DEF_SUBMIT_MSG_PARAM_NAME, |
223 values=self._params['save_message']) |
222 values=self._params['save_message']) |
224 |
223 |
225 # populate form with the existing entity |
224 # populate form with the existing entity |
226 form = self._params['edit_form'](instance=entity) |
225 form = self._params['edit_form'](instance=entity) |
227 else: |
226 else: |
295 |
294 |
296 try: |
295 try: |
297 entity = models.sponsor.logic.getIfFields(**kwargs) |
296 entity = models.sponsor.logic.getIfFields(**kwargs) |
298 except soc.logic.out_of_band.ErrorResponse, error: |
297 except soc.logic.out_of_band.ErrorResponse, error: |
299 template = self._templates['create'] |
298 template = self._templates['create'] |
300 error.message = error.message + DEF_CREATE_NEW_ENTITY_MSG % { |
299 error.message = error.message + self.DEF_CREATE_NEW_ENTITY_MSG % { |
301 'entity_type_lower' : self._name, |
300 'entity_type_lower' : self._name, |
302 'entity_type_upper' : self._Name, |
301 'entity_type_upper' : self._Name, |
303 'create' : self._redirects['create'] |
302 'create' : self._redirects['create'] |
304 } |
303 } |
305 return simple.errorResponse(request, error, template, context) |
304 return simple.errorResponse(request, error, template, context) |
307 if not entity: |
306 if not entity: |
308 #TODO: Create a proper error page for this |
307 #TODO: Create a proper error page for this |
309 return http.HttpResponseRedirect('/') |
308 return http.HttpResponseRedirect('/') |
310 |
309 |
311 if not self._logic.isDeletable(entity): |
310 if not self._logic.isDeletable(entity): |
312 # TODO: Update the notice area telling the user they can't delete the entity |
311 # TODO: Update the notice area telling the user that they |
|
312 # can't delete the entity |
313 pass |
313 pass |
314 |
314 |
315 self._logic.delete(entity) |
315 self._logic.delete(entity) |
316 redirect = self._params['delete_redirect'] |
316 redirect = self._params['delete_redirect'] |
317 |
317 |