web/views/massmailing.py
changeset 3524 a3431f4e2f40
parent 3457 0924d0d08d60
parent 3506 f0ec5d17f470
child 3998 94cc7cad3d2d
equal deleted inserted replaced
3505:c0c7a944c00d 3524:a3431f4e2f40
    11 import operator
    11 import operator
    12 
    12 
    13 from cubicweb.interfaces import IEmailable
    13 from cubicweb.interfaces import IEmailable
    14 from cubicweb.selectors import implements, match_user_groups
    14 from cubicweb.selectors import implements, match_user_groups
    15 from cubicweb.view import EntityView
    15 from cubicweb.view import EntityView
    16 from cubicweb.web import stdmsgs
    16 from cubicweb.web import stdmsgs, action, form, formfields as ff
    17 from cubicweb.web.action import Action
       
    18 from cubicweb.web.form import FormViewMixIn
       
    19 from cubicweb.web.formfields import StringField
       
    20 from cubicweb.web.formwidgets import CheckBox, TextInput, AjaxWidget, ImgButton
    17 from cubicweb.web.formwidgets import CheckBox, TextInput, AjaxWidget, ImgButton
    21 from cubicweb.web.views import forms, formrenderers
    18 from cubicweb.web.views import forms, formrenderers
    22 
    19 
    23 
    20 
    24 class SendEmailAction(Action):
    21 class SendEmailAction(action.Action):
    25     __regid__ = 'sendemail'
    22     __regid__ = 'sendemail'
    26     # XXX should check email is set as well
    23     # XXX should check email is set as well
    27     __select__ = implements(IEmailable) & match_user_groups('managers', 'users')
    24     __select__ = (action.Action.__select__ & implements(IEmailable)
       
    25                   & match_user_groups('managers', 'users'))
    28 
    26 
    29     title = _('send email')
    27     title = _('send email')
    30     category = 'mainactions'
    28     category = 'mainactions'
    31 
    29 
    32     def url(self):
    30     def url(self):
    38 
    36 
    39 
    37 
    40 class MassMailingForm(forms.FieldsForm):
    38 class MassMailingForm(forms.FieldsForm):
    41     __regid__ = 'massmailing'
    39     __regid__ = 'massmailing'
    42 
    40 
    43     sender = StringField(widget=TextInput({'disabled': 'disabled'}), label=_('From:'))
    41     sender = ff.StringField(widget=TextInput({'disabled': 'disabled'}),
    44     recipient = StringField(widget=CheckBox(), label=_('Recipients:'))
    42                             label=_('From:'))
    45     subject = StringField(label=_('Subject:'), max_length=256)
    43     recipient = ff.StringField(widget=CheckBox(), label=_('Recipients:'))
    46     mailbody = StringField(widget=AjaxWidget(wdgtype='TemplateTextField',
    44     subject = ff.StringField(label=_('Subject:'), max_length=256)
    47                                              inputid='mailbody'))
    45     mailbody = ff.StringField(widget=AjaxWidget(wdgtype='TemplateTextField',
       
    46                                                 inputid='mailbody'))
    48 
    47 
    49     form_buttons = [ImgButton('sendbutton', "javascript: $('#sendmail').submit()",
    48     form_buttons = [ImgButton('sendbutton', "javascript: $('#sendmail').submit()",
    50                               _('send email'), 'SEND_EMAIL_ICON'),
    49                               _('send email'), 'SEND_EMAIL_ICON'),
    51                     ImgButton('cancelbutton', "javascript: history.back()",
    50                     ImgButton('cancelbutton', "javascript: history.back()",
    52                               stdmsgs.BUTTON_CANCEL, 'CANCEL_EMAIL_ICON')]
    51                               stdmsgs.BUTTON_CANCEL, 'CANCEL_EMAIL_ICON')]
   115         w(u'</div>')
   114         w(u'</div>')
   116 
   115 
   117     def render_buttons(self, w, form):
   116     def render_buttons(self, w, form):
   118         pass
   117         pass
   119 
   118 
   120 class MassMailingFormView(FormViewMixIn, EntityView):
   119 class MassMailingFormView(form.FormViewMixIn, EntityView):
   121     __regid__ = 'massmailing'
   120     __regid__ = 'massmailing'
   122     __select__ = implements(IEmailable) & match_user_groups('managers', 'users')
   121     __select__ = implements(IEmailable) & match_user_groups('managers', 'users')
   123 
   122 
   124     def call(self):
   123     def call(self):
   125         req = self._cw
   124         req = self._cw