def subscribe(self, email, newsletter_list_id, lang=None, user_id=None): from courriers.backends import get_backend from courriers.models import NewsletterList from courriers.compat import get_user_model User = get_user_model() backend = get_backend()() newsletter_list = None if newsletter_list_id: newsletter_list = NewsletterList.objects.get(pk=newsletter_list_id) user = None if user_id is not None: user = User.objects.get(pk=user_id) try: backend.register(email=email, newsletter_list=newsletter_list, lang=lang, user=user) except Exception as e: raise self.retry(exc=e, countdown=60)
def unsubscribe(self, email, newsletter_list_id=None, user_id=None, **kwargs): from courriers.backends import get_backend from courriers.models import NewsletterList from courriers import signals from django.contrib.auth import get_user_model User = get_user_model() newsletter_lists = NewsletterList.objects.all() if newsletter_list_id: newsletter_lists = NewsletterList.objects.filter(pk=newsletter_list_id) user = None if user_id is not None: user = User.objects.get(pk=user_id) else: user = User.objects.filter(email=email).last() if user: for newsletter_list in newsletter_lists: signals.unsubscribed.send( sender=User, user=user, newsletter_list=newsletter_list ) else: backend = get_backend()() for newsletter in newsletter_lists: backend.unsubscribe(newsletter.list_id, email)
def setUp(self): from courriers import settings reload(settings) from courriers.backends import get_backend self.backend_klass = get_backend() self.backend = self.backend_klass() self.monthly = NewsletterList.objects.create(name="Monthly", slug="monthly", languages=['fr']) self.weekly = NewsletterList.objects.create(name="Weekly", slug="weekly", languages=['fr']) n1 = Newsletter.objects.create(name="3000 projets finances", published_at=datetime.now() - datetime.timedelta(hours=2), status=Newsletter.STATUS_ONLINE, newsletter_list=self.monthly) n2 = Newsletter.objects.create(name="3000 projets finances [fr]", published_at=datetime.now() - datetime.timedelta(hours=2), status=Newsletter.STATUS_ONLINE, newsletter_list=self.monthly, languages=['fr']) n3 = Newsletter.objects.create(name="3000 projets finances [en-us]", published_at=datetime.now() - datetime.timedelta(hours=2), status=Newsletter.STATUS_ONLINE, newsletter_list=self.weekly, languages=['en-us']) self.newsletters = [n1, n2, n3]
def setUp(self): from courriers.backends import get_backend self.backend_klass = get_backend() self.backend = self.backend_klass() self.monthly = NewsletterList.objects.create(name="Monthly", slug="monthly")
def handle(self, *args, **options): from courriers.backends import get_backend from courriers.models import NewsletterSubscriber self.connection = options.get('connection') backend_klass = get_backend() backend = backend_klass() unsubscribed_users = (NewsletterSubscriber.objects.using(self.connection) .filter(is_unsubscribed=True) .values_list('email', flat=True) .order_by('-unsubscribed_at')) mailjet_contacts = backend.mailjet_api.contact.list(unsub=1) mailjet_users = [contact['email'] for contact in mailjet_contacts['result']] diff = list(set(unsubscribed_users) - set(mailjet_users)) print "%d contacts to unsubscribe" % len(diff) for email in diff: backend.unregister(email) print "Unsubscribe user: %s" % email
def setUp(self): from courriers.backends import get_backend self.backend_klass = get_backend() self.backend = self.backend_klass() current = datetime.now().strftime('%Y-%m-%d %H:%M') self.monthly = NewsletterList.objects.create(name="TestMonthly", slug="testmonthly", languages=['fr']) self.weekly = NewsletterList.objects.create(name="TestWeekly", slug="testweekly", languages=['fr']) n1 = Newsletter.objects.create(name="3000 projets financés %s" % current, published_at=datetime.now() - datetime.timedelta(hours=2), status=Newsletter.STATUS_ONLINE, newsletter_list=self.monthly) n2 = Newsletter.objects.create(name="3000 projets financés %s [monthly][fr]" % current, published_at=datetime.now() - datetime.timedelta(hours=2), status=Newsletter.STATUS_ONLINE, newsletter_list=self.monthly, languages=['fr']) n3 = Newsletter.objects.create(name="3000 projets financés %s [monthly][en-us]" % current, published_at=datetime.now() - datetime.timedelta(hours=2), status=Newsletter.STATUS_ONLINE, newsletter_list=self.weekly, languages=['en-us']) n4 = Newsletter.objects.create(name="3000 projets financés %s [weekly][fr]" % current, published_at=datetime.now() - datetime.timedelta(hours=2), status=Newsletter.STATUS_ONLINE, newsletter_list=self.weekly, languages=['fr']) self.newsletters = [n1, n2, n3, n4]
def subscribe(self, email, newsletter_list_id, user_id=None, **kwargs): from courriers.backends import get_backend from courriers.models import NewsletterList from courriers import signals from django.contrib.auth import get_user_model User = get_user_model() backend = get_backend()() newsletter_list = None if newsletter_list_id: newsletter_list = NewsletterList.objects.get(pk=newsletter_list_id) user = None if user_id is not None: user = User.objects.get(pk=user_id) else: user = User.objects.filter(email=email).last() if user: signals.subscribed.send(sender=User, user=user, newsletter_list=newsletter_list) else: try: backend.subscribe(newsletter_list.list_id, email) except Exception as e: raise self.retry(exc=e, countdown=60)
def subscribe(self, email, newsletter_list_id, lang=None, user_id=None): from courriers.backends import get_backend from courriers.models import NewsletterList from django.contrib.auth import get_user_model User = get_user_model() backend = get_backend()() newsletter_list = None if newsletter_list_id: newsletter_list = NewsletterList.objects.get(pk=newsletter_list_id) user = None if user_id is not None: user = User.objects.get(pk=user_id) try: backend.register(email=email, newsletter_list=newsletter_list, lang=lang, user=user) except Exception as e: raise self.retry(exc=e, countdown=60)
def handle(self, *args, **options): from courriers.backends import get_backend from courriers.models import NewsletterSubscriber self.connection = options.get('connection') backend_klass = get_backend() backend = backend_klass() unsubscribed_users = (NewsletterSubscriber.objects.using( self.connection).filter(is_unsubscribed=True).values_list( 'email', flat=True).order_by('-unsubscribed_at')) mailjet_contacts = backend.mailjet_api.contact.list(unsub=1) mailjet_users = [ contact['email'] for contact in mailjet_contacts['result'] ] diff = list(set(unsubscribed_users) - set(mailjet_users)) print "%d contacts to unsubscribe" % len(diff) for email in diff: backend.unregister(email) print "Unsubscribe user: %s" % email
def setUp(self): from courriers.backends import get_backend datetime.datetime = NewDatetime self.backend_klass = get_backend() self.backend = self.backend_klass() self.monthly = NewsletterList.objects.create(name="TestMonthly", slug="testmonthly") self.weekly = NewsletterList.objects.create(name="TestWeekly", slug="testweekly") self.daily = NewsletterList.objects.create(name="TestDaily", slug="testdaily")
def send_newsletter(self, request, newsletter_id): from courriers.backends import get_backend backend_klass = get_backend() backend = backend_klass() newsletter = get_object_or_404(Newsletter, pk=newsletter_id) backend.send_mails(newsletter) self.message_user(request, _('The newsletter "%s" has been sent.') % newsletter) return HttpResponseRedirect(reverse('admin:courriers_newsletter_change', args=(newsletter.id,)))
def setUp(self): from courriers.backends import get_backend self.backend_klass = get_backend() self.backend = self.backend_klass() self.monthly = NewsletterList.objects.create( name="TestMonthly", slug="testmonthly" ) self.segment_monthly = NewsletterSegment.objects.create( name="monthly fr", segment_id=3, newsletter_list=self.monthly, lang="fr" )
def setUp(self): from courriers.backends import get_backend datetime.datetime = NewDatetime self.backend_klass = get_backend() self.backend = self.backend_klass() self.monthly = NewsletterList.objects.create( name="TestMonthly", slug="testmonthly" ) self.weekly = NewsletterList.objects.create( name="TestWeekly", slug="testweekly" ) self.daily = NewsletterList.objects.create(name="TestDaily", slug="testdaily") self.user = User.objects.create_user("adele", "*****@*****.**", "$ecret")
def setUp(self): from courriers.backends import get_backend self.backend_klass = get_backend() self.backend = self.backend_klass() current = datetime.now().strftime('%Y-%m-%d %H:%M') self.monthly = NewsletterList.objects.create(name="TestMonthly", slug="testmonthly", languages=['fr']) self.weekly = NewsletterList.objects.create(name="TestWeekly", slug="testweekly", languages=['fr']) n1 = Newsletter.objects.create( name="3000 projets financés %s" % current, published_at=datetime.now() - datetime.timedelta(hours=2), status=Newsletter.STATUS_ONLINE, newsletter_list=self.monthly) n2 = Newsletter.objects.create( name="3000 projets financés %s [monthly][fr]" % current, published_at=datetime.now() - datetime.timedelta(hours=2), status=Newsletter.STATUS_ONLINE, newsletter_list=self.monthly, languages=['fr']) n3 = Newsletter.objects.create( name="3000 projets financés %s [monthly][en-us]" % current, published_at=datetime.now() - datetime.timedelta(hours=2), status=Newsletter.STATUS_ONLINE, newsletter_list=self.weekly, languages=['en-us']) n4 = Newsletter.objects.create( name="3000 projets financés %s [weekly][fr]" % current, published_at=datetime.now() - datetime.timedelta(hours=2), status=Newsletter.STATUS_ONLINE, newsletter_list=self.weekly, languages=['fr']) self.newsletters = [n1, n2, n3, n4]
def setUp(self): from courriers.backends import get_backend self.backend_klass = get_backend() self.backend = self.backend_klass() current = datetime.now().strftime("%Y-%m-%d %H:%M") self.monthly = NewsletterList.objects.create( name="TestMonthly", slug="testmonthly", list_id=1 ) self.weekly = NewsletterList.objects.create( name="TestWeekly", slug="testweekly", list_id=2 ) self.segment_monthly = NewsletterSegment.objects.create( name="monthly", segment_id=3, newsletter_list=self.monthly ) self.segment_weekly = NewsletterSegment.objects.create( name="weekly", segment_id=3, newsletter_list=self.weekly ) self.segment_monthly_fr = NewsletterSegment.objects.create( name="monthly fr", segment_id=3, newsletter_list=self.monthly, lang="fr" ) self.segment_weekly_fr = NewsletterSegment.objects.create( name="weekly fr", segment_id=4, newsletter_list=self.weekly, lang="fr" ) self.segment_monthly_en = NewsletterSegment.objects.create( name="monthly en", segment_id=4, newsletter_list=self.monthly, lang="en-us" ) self.nl_monthly = Newsletter.objects.create( name="3000 projets financés %s" % current, published_at=datetime.now() - datetime.timedelta(hours=2), status=Newsletter.STATUS_ONLINE, newsletter_list=self.monthly, newsletter_segment=self.segment_monthly, ) self.nl_monthly_fr = Newsletter.objects.create( name="3000 projets financés %s [monthly][fr]" % current, published_at=datetime.now() - datetime.timedelta(hours=2), status=Newsletter.STATUS_ONLINE, newsletter_list=self.monthly, newsletter_segment=self.segment_monthly_fr, ) self.nl_monthly_en = Newsletter.objects.create( name="3000 projects %s" % current, published_at=datetime.now() - datetime.timedelta(hours=2), status=Newsletter.STATUS_ONLINE, newsletter_list=self.monthly, newsletter_segment=self.segment_monthly_en, ) self.nl_weekly = Newsletter.objects.create( name="3000 projets financés %s [monthly][en-us]" % current, published_at=datetime.now() - datetime.timedelta(hours=2), status=Newsletter.STATUS_ONLINE, newsletter_list=self.weekly, newsletter_segment=self.segment_weekly, ) self.nl_weekly_fr = Newsletter.objects.create( name="3000 projets financés %s [weekly][fr]" % current, published_at=datetime.now() - datetime.timedelta(hours=2), status=Newsletter.STATUS_ONLINE, newsletter_list=self.weekly, newsletter_segment=self.segment_weekly_fr, ) self.user = User.objects.create_user("adele", "*****@*****.**", "$ecret")