web/views/basecontrollers.py
changeset 6582 8eb7883b4223
parent 6545 5cea387a5667
child 6619 ed5b452506af
equal deleted inserted replaced
6581:4a3b264589dc 6582:8eb7883b4223
    18 """Set of base controllers, which are directly plugged into the application
    18 """Set of base controllers, which are directly plugged into the application
    19 object to handle publication.
    19 object to handle publication.
    20 """
    20 """
    21 
    21 
    22 __docformat__ = "restructuredtext en"
    22 __docformat__ = "restructuredtext en"
       
    23 _ = unicode
    23 
    24 
    24 from logilab.common.date import strptime
    25 from logilab.common.date import strptime
    25 
    26 
    26 from cubicweb import (NoSelectableObject, ObjectNotFound, ValidationError,
    27 from cubicweb import (NoSelectableObject, ObjectNotFound, ValidationError,
    27                       AuthenticationError, typed_eid)
    28                       AuthenticationError, typed_eid)
   117         view, rset = self._select_view_and_rset(rset)
   118         view, rset = self._select_view_and_rset(rset)
   118         self.add_to_breadcrumbs(view)
   119         self.add_to_breadcrumbs(view)
   119         self.validate_cache(view)
   120         self.validate_cache(view)
   120         template = self.appli.main_template_id(self._cw)
   121         template = self.appli.main_template_id(self._cw)
   121         return self._cw.vreg['views'].main_template(self._cw, template,
   122         return self._cw.vreg['views'].main_template(self._cw, template,
   122                                                 rset=rset, view=view)
   123                                                     rset=rset, view=view)
   123 
   124 
   124     def _select_view_and_rset(self, rset):
   125     def _select_view_and_rset(self, rset):
   125         req = self._cw
   126         req = self._cw
   126         if rset is None and not hasattr(req, '_rql_processed'):
   127         if rset is None and not hasattr(req, '_rql_processed'):
   127             req._rql_processed = True
   128             req._rql_processed = True
   582     __regid__ = 'reportbug'
   583     __regid__ = 'reportbug'
   583     __select__ = match_form_params('description')
   584     __select__ = match_form_params('description')
   584 
   585 
   585     def publish(self, rset=None):
   586     def publish(self, rset=None):
   586         body = self._cw.form['description']
   587         body = self._cw.form['description']
   587         self.sendmail(self._cw.config['submit-mail'], _('%s error report') % self._cw.config.appid, body)
   588         self.sendmail(self._cw.config['submit-mail'],
       
   589                       self._cw._('%s error report') % self._cw.config.appid,
       
   590                       body)
   588         url = self._cw.build_url(__message=self._cw._('bug report sent'))
   591         url = self._cw.build_url(__message=self._cw._('bug report sent'))
   589         raise Redirect(url)
   592         raise Redirect(url)
   590 
   593 
   591 
   594 
   592 class UndoController(Controller):
   595 class UndoController(Controller):
   594     __select__ = authenticated_user() & match_form_params('txuuid')
   597     __select__ = authenticated_user() & match_form_params('txuuid')
   595 
   598 
   596     def publish(self, rset=None):
   599     def publish(self, rset=None):
   597         txuuid = self._cw.form['txuuid']
   600         txuuid = self._cw.form['txuuid']
   598         errors = self._cw.cnx.undo_transaction(txuuid)
   601         errors = self._cw.cnx.undo_transaction(txuuid)
   599         if errors:
   602         if not errors:
   600             self.w(self._cw._('some errors occurred:'))
       
   601             self.wview('pyvalist', pyvalue=errors)
       
   602         else:
       
   603             self.redirect()
   603             self.redirect()
       
   604         return self._cw._('some errors occurred:') + self.view('pyvalist',
       
   605                                                                pyvalue=errors)
   604 
   606 
   605     def redirect(self):
   607     def redirect(self):
   606         req = self._cw
   608         req = self._cw
   607         breadcrumbs = req.session.data.get('breadcrumbs', None)
   609         breadcrumbs = req.session.data.get('breadcrumbs', None)
   608         if breadcrumbs is not None and len(breadcrumbs) > 1:
   610         if breadcrumbs is not None and len(breadcrumbs) > 1: