From 62173a4f80e2c94ae465b1552cc2ffd283ce7939 Mon Sep 17 00:00:00 2001 From: Serghei Mihai Date: Tue, 12 Jul 2016 15:42:51 +0200 Subject: [PATCH] don't show identifier's scheme on unsubscription page (#12544) --- corbo/models.py | 8 ++++++++ corbo/templates/corbo/subscription_confirm_delete.html | 2 +- corbo/views.py | 2 +- tests/test_emailing.py | 10 +++++++--- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/corbo/models.py b/corbo/models.py index 6989343..c09de6e 100644 --- a/corbo/models.py +++ b/corbo/models.py @@ -121,5 +121,13 @@ class Subscription(models.Model): uuid = models.CharField(_('User identifier'), max_length=128, blank=True) identifier = models.CharField(_('identifier'), max_length=128, blank=True, help_text=_('ex.: mailto, homepage, ...')) + + def get_identifier_display(self): + try: + scheme, identifier = self.identifier.split(':') + return identifier + except ValueError: + return self.identifier + class Meta: unique_together = ('category', 'identifier', 'uuid') diff --git a/corbo/templates/corbo/subscription_confirm_delete.html b/corbo/templates/corbo/subscription_confirm_delete.html index f8ed871..5b8b5f7 100644 --- a/corbo/templates/corbo/subscription_confirm_delete.html +++ b/corbo/templates/corbo/subscription_confirm_delete.html @@ -7,7 +7,7 @@ Unsubscription from {{ category }} {% block content %}
-{% blocktrans with object.category as category and object.identifier as identifier %} +{% blocktrans with object.category as category and object.get_identifier_display as identifier %} Are you sure you want to unsubscribe {{ identifier }} from "{{ category }}"? {% endblocktrans %}
diff --git a/corbo/views.py b/corbo/views.py index ffaf67b..edf9455 100644 --- a/corbo/views.py +++ b/corbo/views.py @@ -118,7 +118,7 @@ class UnsubscribeView(DeleteView): data = signing.loads(self.kwargs['unsubscription_token']) try: return models.Subscription.objects.get(category__pk=data['category'], - identifier=data['identifier']) + identifier=data['identifier']) except models.Subscription.DoesNotExist: raise Http404 diff --git a/tests/test_emailing.py b/tests/test_emailing.py index 42ca111..ba8944b 100644 --- a/tests/test_emailing.py +++ b/tests/test_emailing.py @@ -96,9 +96,10 @@ def test_check_inline_images(app, categories, announces): def test_unsubscription_link(app, categories, announces): for category in categories: uuid = uuid4() - email = '%s@example.net' % uuid + scheme = 'mailto:' + uri = scheme + '%s@example.net' % uuid s = Subscription.objects.create(category=category, - identifier=email, + identifier=uri, uuid=str(uuid)) for announce in announces: if announce.category != category: @@ -108,9 +109,12 @@ def test_unsubscription_link(app, categories, announces): assert broadcast.result assert mail.outbox signature = signing.dumps({'category': announce.category.pk, - 'identifier': email}) + 'identifier': uri}) unsubscription_link = reverse('unsubscribe', kwargs={'unsubscription_token': signature}) 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) + assert scheme not in resp.content -- 2.8.1