Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
    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]
Exemplo n.º 4
0
    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")
Exemplo n.º 5
0
    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
Exemplo n.º 6
0
    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]
Exemplo n.º 7
0
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)
Exemplo n.º 8
0
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
Exemplo n.º 10
0
    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")
Exemplo n.º 11
0
    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")
Exemplo n.º 12
0
    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,)))
Exemplo n.º 13
0
    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"
        )
Exemplo n.º 14
0
    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")
Exemplo n.º 15
0
    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")
Exemplo n.º 16
0
    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]
Exemplo n.º 17
0
    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]
Exemplo n.º 18
0
    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")