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/' )
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")
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/')
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()
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_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)
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)
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)
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)
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()
def execute(self): logger.info(_('Submitting queued newsletter mailings')) Submission.submit_queue()
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()
def submit_newsletter(): Submission.submit_queue()