Ejemplo n.º 1
0
    def test_registration_subscribe_to_newsletter(self):
        options.set("auth.allow-registration", True)
        with self.feature("auth:register"):
            resp = self.client.post(
                self.path,
                {
                    "username": "******",
                    "password": "******",
                    "name": "Foo Bar",
                    "op": "register",
                    "subscribe": "1",
                },
            )
        assert resp.status_code == 302

        user = User.objects.get(
            username="******")
        assert user.email == "*****@*****.**"
        assert user.check_password("foobar")
        assert user.name == "Foo Bar"

        results = newsletter.get_subscriptions(user)["subscriptions"]
        assert len(results) == 1
        assert results[0].list_id == newsletter.get_default_list_id()
        assert results[0].subscribed
        assert not results[0].verified
Ejemplo n.º 2
0
def add_email(email, user, subscribe_newsletter=False):
    """
    Adds an email to user account

    Can be either primary or secondary
    """

    # Bad email
    if email is None:
        raise InvalidEmailError

    try:
        with transaction.atomic():
            new_email = UserEmail.objects.create(user=user, email=email)
    except IntegrityError:
        raise DuplicateEmailError
    else:
        new_email.set_hash()
        new_email.save()
        user.send_confirm_email_singular(new_email)

        # Update newsletter subscription and mark as unverified
        if subscribe_newsletter:
            newsletter.create_or_update_subscription(
                user=user,
                verified=False,
                list_id=newsletter.get_default_list_id(),
            )
        return new_email
Ejemplo n.º 3
0
 def test_default_subscription(self):
     self.get_valid_response(self.user.id, method="post", subscribed=True, status_code=204)
     results = newsletter.get_subscriptions(self.user)["subscriptions"]
     assert len(results) == 1
     assert results[0].list_id == newsletter.get_default_list_id()
     assert results[0].subscribed
     assert results[0].verified
Ejemplo n.º 4
0
    def post(self, request, user):
        """
        Configure Newsletter Subscription
        `````````````````````````````````

        Update the default newsletter subscription.

        :param boolean subscribed: should be subscribed to newsletter
        :auth: required
        """
        validator = DefaultNewsletterValidator(data=request.DATA)
        if not validator.is_valid():
            return self.respond(validator.errors, status=400)

        result = validator.object
        email = UserEmail.get_primary_email(user)

        kwargs = {
            'subscribed': result['subscribed'],
            'verified': email.is_verified,
            'list_id': newsletter.get_default_list_id(),
        }
        if not result['subscribed']:
            kwargs['unsubscribed_date'] = timezone.now()
        else:
            kwargs['subscribed_date'] = timezone.now()

        newsletter.create_or_update_subscription(user, **kwargs)

        user.update(
            flags=F('flags').bitand(~User.flags.newsletter_consent_prompt),
        )

        return self.respond(status=204)
Ejemplo n.º 5
0
 def test_default_subscription(self):
     response = self.client.post(self.url, data={"subscribed": True})
     assert response.status_code == 204, response.content
     results = newsletter.get_subscriptions(self.user)["subscriptions"]
     assert len(results) == 1
     assert results[0].list_id == newsletter.get_default_list_id()
     assert results[0].subscribed
     assert results[0].verified
Ejemplo n.º 6
0
 def save(self, commit=True):
     user = super(RegistrationForm, self).save(commit=False)
     user.email = user.username
     user.set_password(self.cleaned_data['password'])
     if commit:
         user.save()
         if self.cleaned_data.get('subscribe'):
             newsletter.create_or_update_subscription(user, list_id=newsletter.get_default_list_id())
     return user
Ejemplo n.º 7
0
 def test_default_subscription(self):
     response = self.client.post(self.url, data={
         'subscribed': True,
     })
     assert response.status_code == 204, response.content
     results = newsletter.get_subscriptions(self.user)['subscriptions']
     assert len(results) == 1
     assert results[0].list_id == newsletter.get_default_list_id()
     assert results[0].subscribed
     assert results[0].verified
Ejemplo n.º 8
0
    def test_add_secondary_email_with_newsletter_subscribe(self):
        response = self.client.post(self.url,
                                    data={
                                        'email': '*****@*****.**',
                                        'newsletter': '1',
                                    })

        assert response.status_code == 201
        assert UserEmail.objects.filter(
            user=self.user, email='*****@*****.**').exists()
        results = newsletter.get_subscriptions(self.user)['subscriptions']
        assert len(results) == 1
        assert results[0].list_id == newsletter.get_default_list_id()
        assert results[0].subscribed
        assert not results[0].verified
Ejemplo n.º 9
0
    def test_registration_subscribe_to_newsletter(self):
        options.set('auth.allow-registration', True)
        with self.feature('auth:register'):
            resp = self.client.post(
                self.path, {
                    'username': '******',
                    'password': '******',
                    'name': 'Foo Bar',
                    'op': 'register',
                    'subscribe': '1',
                }
            )
        assert resp.status_code == 302

        user = User.objects.get(username='******')
        assert user.email == '*****@*****.**'
        assert user.check_password('foobar')
        assert user.name == 'Foo Bar'

        results = newsletter.get_subscriptions(user)['subscriptions']
        assert len(results) == 1
        assert results[0].list_id == newsletter.get_default_list_id()
        assert results[0].subscribed
        assert not results[0].verified
Ejemplo n.º 10
0
    def test_registration_subscribe_to_newsletter(self):
        options.set('auth.allow-registration', True)
        with self.feature('auth:register'):
            resp = self.client.post(
                self.path, {
                    'username': '******',
                    'password': '******',
                    'name': 'Foo Bar',
                    'op': 'register',
                    'subscribe': '1',
                })
        assert resp.status_code == 302

        user = User.objects.get(
            username='******')
        assert user.email == '*****@*****.**'
        assert user.check_password('foobar')
        assert user.name == 'Foo Bar'

        results = newsletter.get_subscriptions(user)['subscriptions']
        assert len(results) == 1
        assert results[0].list_id == newsletter.get_default_list_id()
        assert results[0].subscribed
        assert not results[0].verified