Пример #1
0
def add_mailings(app_title=u'BIMT'):
    """Create default mailings."""
    with transaction.manager:

        mailing_created = Mailing(
            name='after_creation',
            trigger=MailingTriggers.after_user_created.name,
            days=0,
            subject=u'Welcome to {settings[bimt.app_title]}!',
            body=USER_CREATED_BODY,
        )
        Session.add(mailing_created)

        mailing_disabled = Mailing(
            name='after_disabled',
            trigger=MailingTriggers.after_user_disabled.name,
            days=0,
            subject=u'Your {} account is disabled.'.format(app_title),
            body=u'Your account is disabled.',
        )
        Session.add(mailing_disabled)

        mailing_password_changed = Mailing(
            name='after_user_changed_password',
            trigger=MailingTriggers.after_user_changed_password.name,
            days=0,
            subject=u'{} Password Reset'.format(app_title),
            body=PASSWORD_EMAIL_BODY,
        )
        Session.add(mailing_password_changed)
Пример #2
0
    def test_send_immediately_success(self, get_current_request):
        get_current_request.return_value = self.request
        add_users()
        self.request.context = Mailing.by_name('welcome_email')

        result = self.view.send_immediately_success(self.APPSTRUCT)
        self.assertIsInstance(result, HTTPFound)
        self.assertEqual(result.location, '/mailing/4/edit/')

        self.assertEqual(
            self.request.session.pop_flash(),
            [u'Mailing "welcome_email" sent to 1 recipients.'],
        )

        mailer = get_mailer(self.request)
        self.assertEqual(len(mailer.outbox), 1)
        self.assertEqual(mailer.outbox[0].recipients, [
            '*****@*****.**',
        ])
        self.assertEqual(mailer.outbox[0].subject, u'Über Welcome!')

        self.assertIn(
            u'Hello Öne Bar',
            mailer.outbox[0].html,
        )
        self.assertIn(u'Welcome to this über amazing BIMT app!',
                      mailer.outbox[0].html)
        self.assertIn('Best wishes,', mailer.outbox[0].html)
        self.assertIn('BIMT Team', mailer.outbox[0].html)
Пример #3
0
def _make_mailing(name='foo', days=0, subject=u'', body=u'', **kwargs):
    mailing = Mailing(name=name,
                      days=days,
                      subject=subject,
                      body=body,
                      **kwargs)
    Session.add(mailing)
    return mailing
Пример #4
0
 def __getitem__(self, key):
     mailing = Mailing.by_id(key)
     if mailing:
         mailing.__parent__ = self
         mailing.__name__ = key
         return mailing
     else:
         raise KeyError
Пример #5
0
    def test_save_success(self):
        self.request.context = Mailing.by_id(1)

        result = self.view.save_success(self.APPSTRUCT)
        self.assertIsInstance(result, HTTPFound)
        self.assertEqual(result.location, '/mailing/1/edit/')

        mailing = Mailing.by_id(1)
        self.assertEqual(mailing.name, 'bar')
        self.assertEqual(mailing.groups, [Group.by_id(1), Group.by_id(2)])
        self.assertEqual(mailing.exclude_groups, [Group.by_id(3)])
        self.assertEqual(mailing.trigger, MailingTriggers.after_created.name)
        self.assertEqual(mailing.days, 7)
        self.assertEqual(mailing.subject, u'Bär')
        self.assertEqual(mailing.body, u'Bän')
        self.assertEqual(self.request.session.pop_flash(),
                         [u'Mailing "bar" modified.'])
Пример #6
0
    def test_set_value_for_send_immediately_button(self):
        add_groups()
        add_users()
        add_demo_mailing()
        self.request.context = Mailing.by_name('welcome_email')

        schema = colander.Schema()
        form = deform.Form(schema, buttons=['foo', 'bar', 'send_immediately'])
        self.view.before(form)
        self.assertEqual(form.buttons[0].value, 'foo')
        self.assertEqual(form.buttons[1].value, 'bar')
        self.assertEqual(
            form.buttons[2].value,
            'Immediately send mailing "welcome_email" to all 1 recipients '
            'without date constraints?')
Пример #7
0
 def test_appstruct_full_context(self):
     self.request.context = Mailing.by_name('welcome_email')
     self.assertEqual(
         self.view.appstruct(), {
             'name': 'welcome_email',
             'groups': [
                 '4',
             ],
             'exclude_groups': [
                 '1',
             ],
             'trigger': MailingTriggers.after_created.name,
             'days': 1,
             'subject': u'Über Welcome!',
             'body': u'Welcome to this über amazing BIMT app!',
         })
Пример #8
0
    def test_submit_success(self):
        result = self.view.submit_success(self.APPSTRUCT)
        self.assertIsInstance(result, HTTPFound)
        self.assertEqual(result.location, '/mailing/1/edit/')

        mailing = Mailing.by_id(1)
        self.assertEqual(mailing.name, 'foo')
        self.assertEqual(mailing.groups, [Group.by_id(1)])
        self.assertEqual(mailing.exclude_groups, [Group.by_id(2)])
        self.assertEqual(mailing.trigger, MailingTriggers.never.name)
        self.assertEqual(mailing.days, 30)
        self.assertEqual(mailing.subject, u'Foö')
        self.assertEqual(mailing.body, u'Bär')

        self.assertEqual(self.request.session.pop_flash(),
                         [u'Mailing "foo" added.'])
Пример #9
0
    def test_test_success(self):
        add_users()
        self.request.user = User.by_email('*****@*****.**')
        self.request.context = Mailing.by_name('welcome_email')

        result = self.view.test_success(self.APPSTRUCT)
        self.assertIsInstance(result, HTTPFound)
        self.assertEqual(result.location, '/mailing/4/edit/')

        self.assertEqual(
            self.request.session.pop_flash(),
            [u'Mailing "welcome_email" sent to "*****@*****.**".'],
        )

        mailer = get_mailer(self.request)
        self.assertEqual(len(mailer.outbox), 1)
        self.assertEqual(mailer.outbox[0].subject,
                         u'[Mailing Test] Über Welcome!')
        self.assertIn('This mailing would be sent to:', mailer.outbox[0].html)
        self.assertIn('*****@*****.**', mailer.outbox[0].html)
Пример #10
0
def add_demo_mailing():
    """Create a dummy mailing."""
    with transaction.manager:
        trial = Group.by_name('trial')
        admins = Group.by_name('admins')

        mailing = Mailing(
            name='welcome_email',
            groups=[
                trial,
            ],
            exclude_groups=[
                admins,
            ],
            trigger=MailingTriggers.after_created.name,
            days=1,
            subject=u'Über Welcome!',
            body=u'Welcome to this über amazing BIMT app!',
        )
        Session.add(mailing)
Пример #11
0
    def submit_success(self, appstruct):
        mailing = Mailing(
            name=appstruct['name'],
            groups=[
                Group.by_id(group_id) for group_id in appstruct.get('groups')
            ],  # noqa
            exclude_groups=[
                Group.by_id(group_id)
                for group_id in appstruct.get('exclude_groups')
            ],  # noqa
            trigger=appstruct['trigger'],
            days=appstruct['days'],
            subject=appstruct['subject'],
            body=appstruct['body'],
        )

        Session.add(mailing)
        Session.flush()
        self.request.session.flash(u'Mailing "{}" added.'.format(mailing.name))
        return HTTPFound(location=self.request.route_path(
            'mailing_edit', mailing_id=mailing.id))
Пример #12
0
def _make_mailing(
    id=1,
    name='foo',
    groups=None,
    exclude_groups=None,
    trigger=MailingTriggers.never.name,
    days=0,
    subject=u'Sübject',
    body=u'Bödy',
):
    if groups is None:
        groups = [_make_group()]
    if exclude_groups is None:
        exclude_groups = []
    return Mailing(
        id=id,
        name=name,
        groups=groups,
        exclude_groups=exclude_groups,
        trigger=trigger,
        days=days,
        subject=subject,
        body=body,
    )
Пример #13
0
 def test_appstruct_empty_context(self):
     self.request.context = Mailing()
     self.assertEqual(self.view.appstruct(), {})