web/views/basecontrollers.py
changeset 3629 559cad62c786
parent 3589 a5432f99f2d9
parent 3608 5a46e68c3d3c
child 3659 993997b4b41d
equal deleted inserted replaced
3590:1b0dbcf4b214 3629:559cad62c786
   190     try:
   190     try:
   191         ctrl.publish(None)
   191         ctrl.publish(None)
   192     except ValidationError, ex:
   192     except ValidationError, ex:
   193         return (False, _validation_error(req, ex), ctrl._edited_entity)
   193         return (False, _validation_error(req, ex), ctrl._edited_entity)
   194     except Redirect, ex:
   194     except Redirect, ex:
   195         if ctrl._edited_entity:
       
   196             ctrl._edited_entity.complete()
       
   197         try:
   195         try:
   198             req.cnx.commit() # ValidationError may be raise on commit
   196             req.cnx.commit() # ValidationError may be raise on commit
   199         except ValidationError, ex:
   197         except ValidationError, ex:
   200             return (False, _validation_error(req, ex), ctrl._edited_entity)
   198             return (False, _validation_error(req, ex), ctrl._edited_entity)
   201         except Exception, ex:
   199         except Exception, ex:
   202             req.cnx.rollback()
   200             req.cnx.rollback()
   203             req.exception('unexpected error while validating form')
   201             req.exception('unexpected error while validating form')
   204             return (False, req._(str(ex).decode('utf-8')), ctrl._edited_entity)
   202             return (False, req._(str(ex).decode('utf-8')), ctrl._edited_entity)
   205         else:
   203         else:
       
   204             # complete entity: it can be used in js callbacks where we might
       
   205             # want every possible information
       
   206             if ctrl._edited_entity:
       
   207                 ctrl._edited_entity.complete()
   206             return (True, ex.location, ctrl._edited_entity)
   208             return (True, ex.location, ctrl._edited_entity)
   207     except Exception, ex:
   209     except Exception, ex:
   208         req.cnx.rollback()
   210         req.cnx.rollback()
   209         req.exception('unexpected error while validating form')
   211         req.exception('unexpected error while validating form')
   210         return (False, req._(str(ex).decode('utf-8')), ctrl._edited_entity)
   212         return (False, req._(str(ex).decode('utf-8')), ctrl._edited_entity)
   552         if isinstance(eids, basestring):
   554         if isinstance(eids, basestring):
   553             eids = (eids,)
   555             eids = (eids,)
   554         rql = 'Any X WHERE X eid in (%s)' % (','.join(eids))
   556         rql = 'Any X WHERE X eid in (%s)' % (','.join(eids))
   555         rset = self._cw.execute(rql)
   557         rset = self._cw.execute(rql)
   556         for entity in rset.entities():
   558         for entity in rset.entities():
   557             entity.complete() # XXX really?
       
   558             yield entity
   559             yield entity
   559 
   560 
   560     @property
   561     @property
   561     @cached
   562     @cached
   562     def smtp(self):
   563     def smtp(self):