From: Frédéric Péters Date: Sun, 1 Sep 2013 19:24:40 +0000 (+0200) Subject: rewrote subscribe form X-Git-Tag: v2021~62 X-Git-Url: https://git.0d.be/?p=django-panik-newsletter.git;a=commitdiff_plain;h=08d1e4370bec2c57699813754e78370988105c60 rewrote subscribe form --- diff --git a/newsletter/forms.py b/newsletter/forms.py index 0e39bde..79bdfc0 100644 --- a/newsletter/forms.py +++ b/newsletter/forms.py @@ -1,6 +1,7 @@ -# *-* coding: utf8 -*- - from django import forms +from .models import Subscriber -class SubscriptionForm(forms.Form): - email = forms.EmailField() +class SubscribeForm(forms.ModelForm): + class Meta: + model = Subscriber + exclude = ('inscription_date', 'is_validated', 'is_registered', 'password') diff --git a/newsletter/models.py b/newsletter/models.py index ba7972c..2d1236f 100644 --- a/newsletter/models.py +++ b/newsletter/models.py @@ -1,5 +1,8 @@ # -*- coding: utf8 -*- +import hashlib +import random + from django.db import models from django.template import loader, Context @@ -19,31 +22,17 @@ class Subscriber(models.Model) : def __unicode__(self) : return self.email - def save(self, *args, **kwargs): super(Subscriber, self).save(*args, **kwargs) if self.is_validated is None: - self.send_confirmation_email(args[0]) - - def send_confirmation_email(self, request): - subject = _("%s's newsletter registration." % settings.ORGANIZATION) - confirmation_link = ("%s/newsletter/%s" % (request.get_host(), self.password)) - sender = ("noreplay@%s" % request.get_host().strip("www.")) - organization = settings.ORGANIZATION - organization_url = request.get_host() - message = loader.get_template("confirmation_email.txt") - message_context = Context({ - 'organization' : organization, - 'organization_url' : organization_url, - 'confirmation_link' : confirmation_link, - }) - # Susceptible de lever une socket.error ou une SMTPException - send_mail( - subject, - message.render(message_context), - sender, - [self.email] - ) - self.is_validated=False + self.send_confirmation_email() + + def send_confirmation_email(self): + self.password = hashlib.sha1(str(random.random())).hexdigest() + confirm_subject = loader.get_template('newsletter/confirmation_email_subject.txt') + confirm_body = loader.get_template('newsletter/confirmation_email_body.txt') + context = Context({}) + send_mail(confirm_subject.render(context).strip(), confirm_body.render(context), + settings.NEWSLETTER_SENDER, [self.email]) + self.is_validated = False self.save() - diff --git a/newsletter/templates/registration.html b/newsletter/templates/registration.html index de95417..a4e17ac 100644 --- a/newsletter/templates/registration.html +++ b/newsletter/templates/registration.html @@ -1,3 +1,5 @@ +{% extends "base.html" %} + {% block newsletter_confirmation %} {% if user_exist %} diff --git a/newsletter/templates/subscription_form.html b/newsletter/templates/subscription_form.html deleted file mode 100644 index 6dd6e6a..0000000 --- a/newsletter/templates/subscription_form.html +++ /dev/null @@ -1,23 +0,0 @@ - -{% block newsletter_form %} - {% if is_sent %} -

- Vous devriez recevoir sous peu un mail de confirmation dans votre boîte mail. -

- {% endif %} - {% if custom_errors %} -

- {% for error in custom_errors %} - {{ error }}
- {% endfor %} -

- {% endif %} - -
-