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')) |