7 from smtplib import SMTPException
9 from django.db import models, IntegrityError
10 from django.shortcuts import render
11 from django.core.mail import send_mail
13 from .forms import SubscriptionForm
14 from .models import Subscriber
17 def subscription(request) :
18 INTEGRITY_ERROR = u"Vous êtes déjà inscrit à notre newsletter."
19 SOCKET_ERROR = u"Connexion impossible pour l'instant."
20 SMTP_ERROR = u"Échec de l'envoi du message"
21 REVALIDATION_ERROR = u"Vous avez déjà reçu un mail de confirmation pour votre inscription."
23 if request.method == 'POST' :
24 form = SubscriptionForm(request.POST)
27 cd = form.cleaned_data
28 # Va aussi servir pour le lien de validation.
29 passwd = hashlib.sha1(str(random.random())).hexdigest()
31 subscriber = Subscriber(email=cd['email'], password=passwd, is_validated=None, is_registered=False)
36 except IntegrityError :
37 custom_errors.append(INTEGRITY_ERROR)
38 if(Subscriber.objects.get(email=subscriber.email).is_validated != False) :
39 custom_errors.append(REVALIDATION_ERROR)
41 custom_errors.append(SOCKET_ERROR)
42 except SMTPException :
43 custom_errors.append(SMTP_ERROR)
45 return render(request, 'subscription_form.html', {'form' : form, 'custom_errors' : custom_errors, 'is_sent' : is_sent})
47 return render(request, 'subscription_form.html', {'form' : form})
49 form = SubscriptionForm()
50 return render(request, "subscription_form.html", {'form' : form})