]> git.0d.be Git - django-panik-newsletter.git/blobdiff - newsletter/views.py
rewrote subscribe form
[django-panik-newsletter.git] / newsletter / views.py
index c3e90583a006b3eb04598bc60b284df78433ce4d..09fb952b97d392ef1266e63a724ff0da7d44691d 100644 (file)
@@ -9,51 +9,27 @@ import cookielib
 
 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) :