web/views/basecontrollers.py
changeset 4894 41c28ddca055
parent 4741 f9a176ebe090
child 4913 083b4d454192
equal deleted inserted replaced
4886:18a1735c283c 4894:41c28ddca055
    15 import simplejson
    15 import simplejson
    16 
    16 
    17 from logilab.common.decorators import cached
    17 from logilab.common.decorators import cached
    18 from logilab.common.date import strptime
    18 from logilab.common.date import strptime
    19 
    19 
    20 from cubicweb import NoSelectableObject, ValidationError, ObjectNotFound, typed_eid
    20 from cubicweb import (NoSelectableObject, ValidationError, ObjectNotFound,
       
    21                       typed_eid)
    21 from cubicweb.utils import CubicWebJsonEncoder
    22 from cubicweb.utils import CubicWebJsonEncoder
    22 from cubicweb.selectors import yes, match_user_groups
    23 from cubicweb.selectors import authenticated_user, match_form_params
    23 from cubicweb.mail import format_mail
    24 from cubicweb.mail import format_mail
    24 from cubicweb.web import ExplicitLogin, Redirect, RemoteCallFailed, json_dumps
    25 from cubicweb.web import ExplicitLogin, Redirect, RemoteCallFailed, json_dumps
    25 from cubicweb.web.controller import Controller
    26 from cubicweb.web.controller import Controller
    26 from cubicweb.web.views import vid_from_rset
    27 from cubicweb.web.views import vid_from_rset
    27 from cubicweb.web.views.formrenderers import FormRenderer
    28 from cubicweb.web.views.formrenderers import FormRenderer
   546         return eid_from
   547         return eid_from
   547 
   548 
   548 
   549 
   549 class SendMailController(Controller):
   550 class SendMailController(Controller):
   550     __regid__ = 'sendmail'
   551     __regid__ = 'sendmail'
   551     __select__ = match_user_groups('managers', 'users')
   552     __select__ = authenticated_user() & match_form_params('recipient', 'mailbody', 'subject')
   552 
   553 
   553     def recipients(self):
   554     def recipients(self):
   554         """returns an iterator on email's recipients as entities"""
   555         """returns an iterator on email's recipients as entities"""
   555         eids = self._cw.form['recipient']
   556         eids = self._cw.form['recipient']
   556         # make sure we have a list even though only one recipient was specified
   557         # make sure we have a list even though only one recipient was specified
   594         raise Redirect(url)
   595         raise Redirect(url)
   595 
   596 
   596 
   597 
   597 class MailBugReportController(SendMailController):
   598 class MailBugReportController(SendMailController):
   598     __regid__ = 'reportbug'
   599     __regid__ = 'reportbug'
   599     __select__ = yes()
   600     __select__ = match_form_params('description')
   600 
   601 
   601     def publish(self, rset=None):
   602     def publish(self, rset=None):
   602         body = self._cw.form['description']
   603         body = self._cw.form['description']
   603         self.sendmail(self._cw.config['submit-mail'], _('%s error report') % self._cw.config.appid, body)
   604         self.sendmail(self._cw.config['submit-mail'], _('%s error report') % self._cw.config.appid, body)
   604         url = self._cw.build_url(__message=self._cw._('bug report sent'))
   605         url = self._cw.build_url(__message=self._cw._('bug report sent'))