X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/93da6796796d43def17c8adde0f194489cc14b01..609e72fab77c3a6c4171616aacc8d7f71c4ae804:/src/newsletter/forms.py diff --git a/src/newsletter/forms.py b/src/newsletter/forms.py index 5eb71e898..d473cf3a8 100644 --- a/src/newsletter/forms.py +++ b/src/newsletter/forms.py @@ -1,11 +1,14 @@ # -*- coding: utf-8 -*- from django.core.exceptions import ValidationError from django.core.validators import validate_email -from django.forms import Form, BooleanField +from django.forms import Form, BooleanField, MultipleChoiceField from django.forms.fields import EmailField +from django.forms.widgets import CheckboxSelectMultiple from django.template.loader import render_to_string +from django.utils.safestring import mark_safe from django.utils.translation import ugettext_lazy as _, ugettext +from contact import mailing from newsletter.models import Subscription from wolnelektury.utils import send_noreply_mail @@ -13,20 +16,29 @@ from wolnelektury.utils import send_noreply_mail class NewsletterForm(Form): email_field = 'email' agree_newsletter = BooleanField( - required=False, initial=True, label=_(u'I want to receive Wolne Lektury\'s newsletter.'), help_text='''\ -Oświadczam, że wyrażam zgodę na przetwarzanie moich danych osobowych zawartych \ -w niniejszym formularzu zgłoszeniowym przez Fundację Nowoczesna Polska (administratora danych) z siedzibą \ -w Warszawie (00-514) przy ul. Marszałkowskiej 84/92 lok. 125 w celu otrzymywania newslettera Wolnych Lektur. \ -Jednocześnie oświadczam, że zostałam/em poinformowana/y o tym, że mam prawo wglądu w treść swoich danych i \ -możliwość ich poprawiania oraz że ich podanie jest dobrowolne, ale niezbędne do dokonania zgłoszenia.''') + required=False, initial=False, label=_(u'I want to receive Wolne Lektury\'s newsletter.')) + mailing = False + mailing_field = 'agree_newsletter' - def save(self): + data_processing_part1 = u'''\ +Administratorem danych osobowych jest Fundacja Nowoczesna Polska (ul. Marszałkowska 84/92 lok. 125, 00-514 Warszawa). +Podanie danych osobowych jest dobrowolne.''' + data_processing_part2 = u'''Dane są przetwarzane w zakresie niezbędnym do wysyłania newslettera odbiorcom.''' + data_processing_part3 = u'''\ +Osobom, których dane są zbierane, przysługuje prawo dostępu do treści swoich danych oraz ich poprawiania. +Więcej informacji w polityce prywatności.''' + + @property + def data_processing(self): + return mark_safe('%s %s %s' % (self.data_processing_part1, self.data_processing_part2, self.data_processing_part3)) + + def save(self, *args, **kwargs): try: # multiple inheritance mode - super(NewsletterForm, self).save() + super(NewsletterForm, self).save(*args, **kwargs) except AttributeError: pass - if not self.cleaned_data.get('agree_newsletter'): + if not (self.mailing or self.cleaned_data.get(self.mailing_field)): return email = self.cleaned_data[self.email_field] try: @@ -34,18 +46,25 @@ możliwość ich poprawiania oraz że ich podanie jest dobrowolne, ale niezbędn except ValidationError: pass else: - subscription, created = Subscription.objects.get_or_create(email=email, defaults={'active': False}) - send_noreply_mail( - ugettext(u'Confirm your subscription to Wolne Lektury newsletter'), - render_to_string('newsletter/subscribe_email.html', {'subscription': subscription}), [email]) + # subscription, created = Subscription.objects.get_or_create(email=email, defaults={'active': False}) + # send_noreply_mail( + # ugettext(u'Confirm your subscription to Wolne Lektury newsletter'), + # render_to_string('newsletter/subscribe_email.html', {'subscription': subscription}), [email]) + mailing.subscribe(email, mailing_lists=self.cleaned_data.get('mailing_lists')) class SubscribeForm(NewsletterForm): + mailing = True + agree_newsletter = None + email = EmailField(label=_('email address')) + mailing_lists = MultipleChoiceField( + widget=CheckboxSelectMultiple, + choices=(('general', _(u'general newsletter')), ('contest', _(u'about the contest'))), + label=_(u'mailing list')) def __init__(self, *args, **kwargs): super(SubscribeForm, self).__init__(*args, **kwargs) - self.fields['agree_newsletter'].required = True class UnsubscribeForm(Form): @@ -63,6 +82,7 @@ class UnsubscribeForm(Form): subscription = self.cleaned_data['subscription'] subscription.active = False subscription.save() + mailing.unsubscribe(subscription.email) context = {'subscription': subscription} # refactor to send_noreply_mail