예제 #1
0
class SendForm(form.SchemaForm):
    grok.require('tn.bulletino.SendContent')
    grok.context(behaviors.INewsletterFromContentMarker)

    schema = ISendSchema
    ignoreContext = True
    prefix = 'send'

    label = _(u'Send your newsletter to all subscribers')
    description = _(u"By pressing the button below you will send this "
                    u'newsletter to all of your audience.')

    def __init__(self, context, request, send_view=None):
        super(SendForm, self).__init__(context, request)
        self.send_view = send_view

    @z3c.form.button.buttonAndHandler(_(u'Send to all recipients'))
    def handleSend(self, action):
        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return

        mailing = zope.component.getUtility(pminterfaces.IMailing)
        mailing.send(self.context)

        IStatusMessage(self.request).add(_(u'Message successfully sent.'),
                                         type='info')

        if self.send_view is not None:
            self.send_view.notify_sent()

        self.redirect(self.context.absolute_url())
예제 #2
0
    def handleTest(self, action):
        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return

        subscribers = [
            TestSubscriber(data['test_recipient_address'],
                           format,
                           None,
                           self.context.absolute_url())
            for format in data['formats']
        ]

        mailing = zope.component.getUtility(pminterfaces.IMailing)
        mailing.send(self.context, subscribers=subscribers,
                     suppress_events=True)

        IStatusMessage(self.request).add(_(u'Message successfully sent.'),
                                         type='info')

        if self.send_view is not None:
            self.send_view.notify_sent()

        self.redirect(self.context.absolute_url())
예제 #3
0
class ITestSchema(model.Schema):

    test_recipient_address = zope.schema.TextLine(
        title=_(u'Test recipient'),
        required=True,
    )

    form.widget(formats=z3c.form.browser.checkbox.CheckBoxFieldWidget)
    formats = zope.schema.Tuple(
        title=_(u'Formats'),
        value_type=zope.schema.Choice(
            values=[u'html', u'text']
        ),
        default=(u'html',),
        missing_value=(),
        required=True,
    )
예제 #4
0
class TestForm(form.SchemaForm):
    grok.require('tn.bulletino.SendContent')
    grok.context(behaviors.INewsletterFromContentMarker)

    schema = ITestSchema
    ignoreContext = True
    prefix = 'test'

    label = _(u'Test your newsletter')
    description = _(u'Send this newsletter to your own e-mail address in '
                    u'order to see how it will appear to your audience.')

    def __init__(self, context, request, send_view=None):
        super(TestForm, self).__init__(context, request)
        self.send_view = send_view

    @z3c.form.button.buttonAndHandler(_(u'Perform test'))
    def handleTest(self, action):
        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return

        subscribers = [
            TestSubscriber(data['test_recipient_address'],
                           format,
                           None,
                           self.context.absolute_url())
            for format in data['formats']
        ]

        mailing = zope.component.getUtility(pminterfaces.IMailing)
        mailing.send(self.context, subscribers=subscribers,
                     suppress_events=True)

        IStatusMessage(self.request).add(_(u'Message successfully sent.'),
                                         type='info')

        if self.send_view is not None:
            self.send_view.notify_sent()

        self.redirect(self.context.absolute_url())
예제 #5
0
    def handleSend(self, action):
        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return

        mailing = zope.component.getUtility(pminterfaces.IMailing)
        mailing.send(self.context)

        IStatusMessage(self.request).add(_(u'Message successfully sent.'),
                                         type='info')

        if self.send_view is not None:
            self.send_view.notify_sent()

        self.redirect(self.context.absolute_url())
예제 #6
0
    def update(self):
        super(Send, self).update()
        self.test_form.update()
        self.send_form.update()

        # 'fname' is the key used to send the field name in an inline
        # validation request.  If this is an inline validation request, don't
        # set a message.
        if (
            len(self.subscribers()) == 0 and not self._sent and not
            self.request.form.get('fname')
        ):
            IStatusMessage(self.request).add(
                _(u'No subscribers were assigned to this newsletter yet. '
                  u'Edit and add one or more subscriber lists.'),
                type='warning'
            )