1 # -*- coding: utf-8 -*-
2 from django.core.exceptions import ValidationError
3 from django.core.validators import validate_email
4 from django.forms import Form, BooleanField
5 from django.forms.fields import EmailField
6 from django.template.loader import render_to_string
7 from django.utils.translation import ugettext_lazy as _, ugettext
9 from newsletter.models import Subscription
10 from wolnelektury.utils import send_noreply_mail
13 class NewsletterForm(Form):
15 agree_newsletter = BooleanField(
16 required=False, initial=True, label=_(u'I want to receive Wolne Lektury\'s newsletter.'), help_text='''\
17 Oświadczam, że wyrażam zgodę na przetwarzanie moich danych osobowych zawartych \
18 w niniejszym formularzu zgłoszeniowym przez Fundację Nowoczesna Polska (administratora danych) z siedzibą \
19 w Warszawie (00-514) przy ul. Marszałkowskiej 84/92 lok. 125 w celu otrzymywania newslettera Wolnych Lektur. \
20 Jednocześnie oświadczam, że zostałam/em poinformowana/y o tym, że mam prawo wglądu w treść swoich danych i \
21 możliwość ich poprawiania oraz że ich podanie jest dobrowolne, ale niezbędne do dokonania zgłoszenia.''')
25 # multiple inheritance mode
26 super(NewsletterForm, self).save()
27 except AttributeError:
29 if not self.cleaned_data.get('agree_newsletter'):
31 email = self.cleaned_data[self.email_field]
34 except ValidationError:
37 subscription, created = Subscription.objects.get_or_create(email=email, defaults={'active': False})
39 ugettext(u'Confirm your subscription to Wolne Lektury newsletter'),
40 render_to_string('newsletter/subscribe_email.html', {'subscription': subscription}), [email])
43 class SubscribeForm(NewsletterForm):
44 email = EmailField(label=_('email address'))
46 def __init__(self, *args, **kwargs):
47 super(SubscribeForm, self).__init__(*args, **kwargs)
48 self.fields['agree_newsletter'].required = True
51 class UnsubscribeForm(Form):
52 email = EmailField(label=_('email address'))
55 email = self.cleaned_data.get('email')
57 subscription = Subscription.objects.get(email=email)
58 except Subscription.DoesNotExist:
59 raise ValidationError(ugettext(u'Email address not found.'))
60 self.cleaned_data['subscription'] = subscription
63 subscription = self.cleaned_data['subscription']
64 subscription.active = False
67 context = {'subscription': subscription}
68 # refactor to send_noreply_mail
70 ugettext(u'Unsubscribe from Wolne Lektury\'s newsletter.'),
71 render_to_string('newsletter/unsubscribe_email.html', context),
72 [subscription.email], fail_silently=True)