app/soc/views/models/base.py
changeset 389 9b873166d7d5
parent 387 c55195361cb6
child 399 b82852e6963e
equal deleted inserted replaced
388:699b206b64b7 389:9b873166d7d5
    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