From 1071693f2f4b957ef884f629cd6d34dee81712ed Mon Sep 17 00:00:00 2001 From: Serghei Mihai Date: Tue, 12 Jul 2016 16:08:33 +0200 Subject: [PATCH] prefix unsubscription link with url read from settings (#12543) --- corbo/models.py | 4 +++- corbo/settings.py | 3 +++ tests/test_emailing.py | 7 +++++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/corbo/models.py b/corbo/models.py index 6989343..da0c524 100644 --- a/corbo/models.py +++ b/corbo/models.py @@ -1,5 +1,6 @@ from datetime import datetime import logging +import urlparse from html2text import HTML2Text from emails.django import Message from lxml.etree import HTML as HTMLTree @@ -91,7 +92,8 @@ class Broadcast(models.Model): continue unsubscribe_token = signing.dumps({'category': self.announce.category.pk, 'identifier': s.identifier}) - unsubscribe_link = reverse('unsubscribe', kwargs={'unsubscription_token': unsubscribe_token}) + unsubscribe_link = urlparse.urljoin(settings.SITE_BASE_URL, reverse('unsubscribe', + kwargs={'unsubscription_token': unsubscribe_token})) message = template.render(Context({'unsubscribe_link': unsubscribe_link, 'content': self.announce.text})) m.html = message diff --git a/corbo/settings.py b/corbo/settings.py index 96947da..0c36834 100644 --- a/corbo/settings.py +++ b/corbo/settings.py @@ -138,6 +138,9 @@ MELLON_USERNAME_TEMPLATE = '{attributes[name_id_content]}' MELLON_IDENTITY_PROVIDERS = [] +# default site +SITE_BASE_URL = 'http://localhost' + local_settings_file = os.environ.get('CORBO_SETTINGS_FILE', os.path.join(os.path.dirname(__file__), 'local_settings.py')) if os.path.exists(local_settings_file): diff --git a/tests/test_emailing.py b/tests/test_emailing.py index ba8944b..fd19623 100644 --- a/tests/test_emailing.py +++ b/tests/test_emailing.py @@ -1,3 +1,4 @@ +import urlparse import pytest import json from uuid import uuid4 @@ -9,6 +10,7 @@ from django.core import mail, signing from django.utils import timezone from django.core.files.storage import DefaultStorage from django.core.urlresolvers import reverse +from django.conf import settings from corbo.models import Category, Announce, Subscription, Broadcast from corbo.models import channel_choices @@ -110,11 +112,12 @@ def test_unsubscription_link(app, categories, announces): assert mail.outbox signature = signing.dumps({'category': announce.category.pk, 'identifier': uri}) - unsubscription_link = reverse('unsubscribe', kwargs={'unsubscription_token': signature}) + unsubscription_path = reverse('unsubscribe', kwargs={'unsubscription_token': signature}) + unsubscription_link = urlparse.urljoin(settings.SITE_BASE_URL, unsubscription_path) assert mail.outbox[0].subject == announce.title assert unsubscription_link in mail.outbox[0].html assert unsubscription_link in mail.outbox[0].text mail.outbox = [] # make sure the uri schema is not in the page - resp = app.get(unsubscription_link) + resp = app.get(unsubscription_path) assert scheme not in resp.content -- 2.8.1