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 contact import mailing
10 from newsletter.models import Subscription
11 from wolnelektury.utils import send_noreply_mail
14 class NewsletterForm(Form):
16 agree_newsletter = BooleanField(
17 required=False, initial=False, label=_(u'I want to receive Wolne Lektury\'s newsletter.'), help_text='''\
18 Oświadczam, że wyrażam zgodę na przetwarzanie moich danych osobowych zawartych \
19 w niniejszym formularzu zgłoszeniowym przez Fundację Nowoczesna Polska (administratora danych) z siedzibą \
20 w Warszawie (00-514) przy ul. Marszałkowskiej 84/92 lok. 125 w celu otrzymywania newslettera Wolnych Lektur. \
21 Jednocześnie oświadczam, że zostałam/em poinformowana/y o tym, że mam prawo wglądu w treść swoich danych i \
22 możliwość ich poprawiania oraz że ich podanie jest dobrowolne, ale niezbędne do dokonania zgłoszenia.''')
26 # multiple inheritance mode
27 super(NewsletterForm, self).save()
28 except AttributeError:
30 if not self.cleaned_data.get('agree_newsletter'):
32 email = self.cleaned_data[self.email_field]
35 except ValidationError:
38 # subscription, created = Subscription.objects.get_or_create(email=email, defaults={'active': False})
40 # ugettext(u'Confirm your subscription to Wolne Lektury newsletter'),
41 # render_to_string('newsletter/subscribe_email.html', {'subscription': subscription}), [email])
42 mailing.subscribe(email)
45 class SubscribeForm(NewsletterForm):
46 email = EmailField(label=_('email address'))
48 def __init__(self, *args, **kwargs):
49 super(SubscribeForm, self).__init__(*args, **kwargs)
50 self.fields['agree_newsletter'].required = True
53 class UnsubscribeForm(Form):
54 email = EmailField(label=_('email address'))
57 email = self.cleaned_data.get('email')
59 subscription = Subscription.objects.get(email=email)
60 except Subscription.DoesNotExist:
61 raise ValidationError(ugettext(u'Email address not found.'))
62 self.cleaned_data['subscription'] = subscription
65 subscription = self.cleaned_data['subscription']
66 subscription.active = False
69 context = {'subscription': subscription}
70 # refactor to send_noreply_mail
72 ugettext(u'Unsubscribe from Wolne Lektury\'s newsletter.'),
73 render_to_string('newsletter/unsubscribe_email.html', context),
74 [subscription.email], fail_silently=True)