- subscription, created = Subscription.objects.get_or_create(email=email)
- if not created and not subscription.active:
- subscription.active = True
- subscription.save()
- # Send some test email?
+ try:
+ validate_email(email)
+ 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])
+
+
+class SubscribeForm(NewsletterForm):
+ email = EmailField(label=_('email address'))
+
+ def __init__(self, *args, **kwargs):
+ super(SubscribeForm, self).__init__(*args, **kwargs)
+ self.fields['agree_newsletter'].required = True
+
+
+class UnsubscribeForm(Form):
+ email = EmailField(label=_('email address'))
+
+ def clean(self):
+ email = self.cleaned_data.get('email')
+ try:
+ subscription = Subscription.objects.get(email=email)
+ except Subscription.DoesNotExist:
+ raise ValidationError(ugettext(u'Email address not found.'))
+ self.cleaned_data['subscription'] = subscription
+
+ def save(self):
+ subscription = self.cleaned_data['subscription']
+ subscription.active = False
+ subscription.save()
+
+ context = {'subscription': subscription}
+ # refactor to send_noreply_mail
+ send_noreply_mail(
+ ugettext(u'Unsubscribe from Wolne Lektury\'s newsletter.'),
+ render_to_string('newsletter/unsubscribe_email.html', context),
+ [subscription.email], fail_silently=True)