from smtplib import SMTPException
-from django.db import models, IntegrityError
from django.conf import settings
-
-from django.shortcuts import render
+from django.db import models, IntegrityError
from django.utils.translation import ugettext as _
+from django.views.generic.base import TemplateView
+from django.views.generic.edit import CreateView
-from .forms import SubscriptionForm
-from .models import Subscriber
+from .forms import SubscribeForm
+from .models import Subscriber
-def subscription(request) :
- INTEGRITY_ERROR = _("You're already registered at our newsletter.")
- SOCKET_ERROR = _("Connexion error. Try later.")
- SMTP_ERROR = _("Error to sending email.")
- REVALIDATION_ERROR = _("You've already receipt a confirmation email.")
-
- if request.method == 'POST' :
- form = SubscriptionForm(request.POST)
- custom_errors = []
- if form.is_valid() :
- cd = form.cleaned_data
- # Va aussi servir pour le lien de validation.
- passwd = hashlib.sha1(str(random.random())).hexdigest()
-
- subscriber = Subscriber(email=cd['email'], password=passwd, is_validated=None, is_registered=False)
- is_sent=False
- try :
- subscriber.save(request)
- is_sent=True
- except IntegrityError :
- custom_errors.append(INTEGRITY_ERROR)
- if(Subscriber.objects.get(email=subscriber.email).is_validated != False) :
- custom_errors.append(REVALIDATION_ERROR)
- except socket.error :
- custom_errors.append(SOCKET_ERROR)
- except SMTPException :
- custom_errors.append(SMTP_ERROR)
-
- return render(request, 'subscription_form.html', {'form' : form, 'custom_errors' : custom_errors, 'is_sent' : is_sent})
- else :
- return render(request, 'subscription_form.html', {'form' : form})
- else :
- form = SubscriptionForm()
- return render(request, "subscription_form.html", {'form' : form})
+class SubscribeView(CreateView):
+ form_class = SubscribeForm
+ model = Subscriber
+
+ success_url = 'thanks'
+subscribe = SubscribeView.as_view()
+
+class ThanksView(TemplateView):
+ template_name = 'newsletter/thanks.html'
+thanks = ThanksView.as_view()
def unsubscription(request) :