Beispiel #1
0
    def test_submitsubmission(self):
        """ Test queue-based submission. """

        # Adding a subscription after the submission has been created, it should
        # not be used when submitting self.sub
        new_subscr = Subscription.objects.create(
            name='Other Name', email='*****@*****.**',
            newsletter=self.n, subscribed=True
        )

        self.sub.prepared = True
        self.sub.publish_date = now() - timedelta(seconds=1)
        self.sub.save()

        Submission.submit_queue()

        # Get the object fresh from DB, as to assure no caching takes place
        submission = Submission.objects.get(pk=self.sub.pk)

        self.assertTrue(submission.sent)
        self.assertFalse(submission.sending)

        # Make sure mail is being sent out
        self.assertEqual(len(mail.outbox), NUM_SUBSCRIBED)

        # Make sure a submission contains the title and unsubscribe URL
        self.assertEmailContains(submission.message.title)
        self.assertEmailContains(submission.newsletter.unsubscribe_url())
        self.assertEmailHasHeader(
            'List-Unsubscribe',
            'http://example.com/newsletter/test-newsletter/unsubscribe/'
        )
Beispiel #2
0
def send_newsletter(post_id):
    post = Post.objects.get(pk=post_id)
    if not post.notified:
        print("send_newsletter activated")
        site = Site.objects.all()[0]

        newsletter = Newsletter.objects.all()[0]
        submission = Submission()
        message = Message()
        article = Article()
        article.url = "http://{}{}".format(site.domain, post.get_absolute_url())
        article.title = post.title
        article.sortorder = 0

        message.title = post.title
        message.newsletter = newsletter
        message.slug = post.slug
        message.save()
        message.articles.add(article, bulk=False)
        message.save()
        article.save()

        submission.newsletter = newsletter
        submission.message = message
        submission.save()
        for s in newsletter.get_subscriptions():
            submission.subscriptions.add(s)
        submission.save()

        submission.submit()
        Submission.submit_queue()
        post.notified = True
        post.save()
        print("send_newsletter submitted")
Beispiel #3
0
    def test_submitsubmission(self):
        """ Test queue-based submission. """

        # Adding a subscription after the submission has been created, it should
        # not be used when submitting self.sub
        new_subscr = Subscription.objects.create(name='Other Name',
                                                 email='*****@*****.**',
                                                 newsletter=self.n,
                                                 subscribed=True)

        self.sub.prepared = True
        self.sub.publish_date = now() - timedelta(seconds=1)
        self.sub.save()

        Submission.submit_queue()

        # Get the object fresh from DB, as to assure no caching takes place
        submission = Submission.objects.get(pk=self.sub.pk)

        self.assertTrue(submission.sent)
        self.assertFalse(submission.sending)

        # Make sure mail is being sent out
        self.assertEqual(len(mail.outbox), NUM_SUBSCRIBED)

        # Make sure a submission contains the title and unsubscribe URL
        self.assertEmailContains(submission.message.title)
        self.assertEmailContains(submission.newsletter.unsubscribe_url())
        self.assertEmailHasHeader(
            'List-Unsubscribe',
            'http://example.com/newsletter/test-newsletter/unsubscribe/')
Beispiel #4
0
def send_submissions():
    """
    This method removes all blacklisted tokens.
    Version: 1.0
    """
    # local import of model, otherwise it won't work
    from newsletter.models import Submission
    Submission.submit_queue()
Beispiel #5
0
    def test_nosubmit(self):
        """ Assure nothing happens if not prepared. """

        # Assure nothing happens
        Submission.submit_queue()

        self.assertFalse(self.sub.prepared)
        self.assertFalse(self.sub.sent)
        self.assertFalse(self.sub.sending)
Beispiel #6
0
    def test_nosubmit(self):
        """ Assure nothing happens if not prepared. """

        # Assure nothing happens
        Submission.submit_queue()

        self.assertFalse(self.sub.prepared)
        self.assertFalse(self.sub.sent)
        self.assertFalse(self.sub.sending)
    def test_delayedsumbmission(self):
        """ Test delays between emails """

        self.sub.prepared = True
        self.sub.publish_date = now() - timedelta(seconds=1)
        self.sub.save()

        with self.settings(NEWSLETTER_EMAIL_DELAY=0.01):
            with mock.patch('time.sleep', return_value=None) as sleep_mock:
                Submission.submit_queue()

        sleep_mock.assert_called_with(0.01)
Beispiel #8
0
    def test_delayedsumbmission(self):
        """ Test delays between emails """

        self.sub.prepared = True
        self.sub.publish_date = now() - timedelta(seconds=1)
        self.sub.save()

        with self.settings(NEWSLETTER_EMAIL_DELAY=0.01):
            with mock.patch('time.sleep', return_value=None) as sleep_mock:
                Submission.submit_queue()

        sleep_mock.assert_called_with(0.01)
    def send_email(self, action):
        assert action in ACTIONS + ('message', ), 'Unknown action: %s' % action

        if action == 'message':
            # Create submission
            sub = Submission.from_message(self.m)
            sub.prepared = True
            sub.publish_date = now() - timedelta(seconds=1)
            sub.save()

            # Send message email
            Submission.submit_queue()
        else:
            self.s.send_activation_email(action)
Beispiel #10
0
    def send_email(self, action):
        assert action in ACTIONS + ('message', ), 'Unknown action: %s' % action

        if action == 'message':
            # Create submission
            sub = Submission.from_message(self.m)
            sub.prepared = True
            sub.publish_date = now() - timedelta(seconds=1)
            sub.save()

            # Send message email
            Submission.submit_queue()
        else:
            self.s.send_activation_email(action)
Beispiel #11
0
    def send_email(self, action):
        assert action in ACTIONS + ('message', ), 'Unknown action: %s' % action

        if action == 'message':
            # Create submission
            sub = Submission.from_message(self.m, Site.objects.get_current())
            sub.prepared = True
            sub.publish_date = now() - timedelta(seconds=1)
            sub.save()

            # Send message email
            Submission.submit_queue()
        else:
            for subscriber in self.n.get_subscriptions():
                subscriber.send_activation_email(Site.objects.get_current(),
                                                 action)
Beispiel #12
0
    def submit(self, request, object_id):
        submission = self._getobj(request, object_id)

        if submission.sent or submission.prepared:
            messages.info(request, _("Submission already sent."))
            change_url = reverse('admin:newsletter_submission_change',
                                 args=[object_id])
            return HttpResponseRedirect(change_url)

        submission.prepared = True
        submission.save()
        Submission.submit_queue()
        messages.info(request, _("Your submission is sent."))

        changelist_url = reverse('admin:newsletter_submission_changelist')

        return HttpResponseRedirect(changelist_url)
    def handle(self, *args, **options):
        # Setup logging based on verbosity: 1 -> INFO, >1 -> DEBUG
        verbosity = int(options['verbosity'])
        logger = logging.getLogger('newsletter')
        if verbosity == 0:
            logger.setLevel(logging.WARN)
        elif verbosity == 1:  # default
            logger.setLevel(logging.INFO)
        elif verbosity > 1:
            logger.setLevel(logging.DEBUG)
        if verbosity > 2:
            logger = logging.getLogger()
            logger.setLevel(logging.DEBUG)

        logger.info(_('Submitting queued newsletter mailings'))

        # Call submission
        Submission.submit_queue()
    def handle(self, *args, **options):
        # Setup logging based on verbosity: 1 -> INFO, >1 -> DEBUG
        verbosity = int(options['verbosity'])
        logger = logging.getLogger('newsletter')
        if verbosity == 0:
            logger.setLevel(logging.WARN)
        elif verbosity == 1:  # default
            logger.setLevel(logging.INFO)
        elif verbosity > 1:
            logger.setLevel(logging.DEBUG)
        if verbosity > 2:
            logger = logging.getLogger()
            logger.setLevel(logging.DEBUG)

        logger.info(_('Submitting queued newsletter mailings'))

        # Call submission
        Submission.submit_queue()
Beispiel #15
0
 def execute(self):
     logger.info(_('Submitting queued newsletter mailings'))
     Submission.submit_queue()
Beispiel #16
0
 def handle(self, *args, **options):
     self.logger = logging.getLogger(type(self).__name__)
     self.logger.debug('Handle called')
     self.logger.info(_('Submitting queued newsletter mailings'))
     Submission.submit_queue()
Beispiel #17
0
def submit_newsletter():
    Submission.submit_queue()