]> git.0d.be Git - django-panik-newsletter.git/commitdiff
Désinscription.
authorjean-philippe <user@server.tld>
Tue, 16 Jul 2013 22:47:38 +0000 (00:47 +0200)
committerjean-philippe <user@server.tld>
Tue, 16 Jul 2013 22:47:38 +0000 (00:47 +0200)
templates/unsubscription_form.html [new file with mode: 0644]
urls.py
views.py

diff --git a/templates/unsubscription_form.html b/templates/unsubscription_form.html
new file mode 100644 (file)
index 0000000..9a6fb00
--- /dev/null
@@ -0,0 +1,15 @@
+
+{% block unsubscription_form %}
+    {% if message %}
+        <p> {{ message }} </p>
+    {% endif %}
+    {% if form %}
+        <form action="" method="post" >
+            <ul> 
+                {{ form.as_ul }}
+            </ ul>
+            {% csrf_token %}
+            <input type="submit" value="Soumettre">
+        </form> 
+    {% endif %}
+{% endblock %}   
diff --git a/urls.py b/urls.py
index 80543e8c7c2d2ece81277d3b177891fc98eee83e..91d9ac56660d9f70c9cd10649b392272f30afed8 100644 (file)
--- a/urls.py
+++ b/urls.py
@@ -1,9 +1,10 @@
 from django.conf.urls import *
-
-from .views import subscription, registration
+from django.conf import settings
+from .views import subscription, unsubscription, registration
 
 urlpatterns = patterns('',
     url(r'^$', subscription),
+    url(r'^unsubscription/$', unsubscription),
     url(r'^(?P<validation_value>[0-9a-f]{40})$', registration), 
 )
 
index 689d373ec9ad26b7cb61fdc213eb1b58e46a9a2e..c3e90583a006b3eb04598bc60b284df78433ce4d 100644 (file)
--- a/views.py
+++ b/views.py
@@ -4,12 +4,15 @@ import hashlib
 import random
 import socket
 import urllib
+import urllib2
+import cookielib
 
 from smtplib import SMTPException 
 
 from django.db import models, IntegrityError
-from django.shortcuts import render
 from django.conf import settings
+
+from django.shortcuts import render
 from django.utils.translation import ugettext as _
 
 from .forms import SubscriptionForm
@@ -53,6 +56,44 @@ def subscription(request) :
 
 
 
+def unsubscription(request) :
+    UNSUBSCRIPTION_MESSAGE = _("Enter your email for unsunscribe to the newsletter.")
+    UNSUBSCRIPTION_CONFIRMATION_MESSAGE = _("You're now unsubscribed")
+
+    if request.method == 'GET' :
+        form = SubscriptionForm()
+        return render(request, 'unsubscription_form.html', {'form' : form, 'message' : UNSUBSCRIPTION_MESSAGE})
+    elif request.method == 'POST' :
+        form = SubscriptionForm(request.POST)
+        if form.is_valid() :
+            cd = form.cleaned_data
+            try :
+                subscriber = Subscriber.objects.get(email = cd['email'])
+                
+                cookie_jar = cookielib.CookieJar()
+                url_opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie_jar))
+
+                login_params = urllib.urlencode({'email' : subscriber.email, 'password' : subscriber.password})
+                login_request = urllib2.Request(settings.NEWSLETTER_UNSUBSCRIPTION_URL, login_params)
+                url = url_opener.open(login_request)
+                
+                unsubscribe_action_url = ("%s/%s" % (settings.NEWSLETTER_UNSUBSCRIPTION_URL, subscriber.email))
+                unsubscribe_params = urllib.urlencode({'unsub' : 'Résilier', 'unsubconfirm' : '1'})
+                unsubscribe_request = urllib2.Request(unsubscribe_action_url, unsubscribe_params)
+                url = url_opener.open(unsubscribe_request)
+
+                url.close()
+
+                subscriber.delete()
+                return render(request, 'unsubscription_form.html', {'message' : UNSUBSCRIPTION_CONFIRMATION_MESSAGE})
+            except Subscriber.DoesNotExist :
+                error_message = _("The entered email address does not exist. Please try another one.")
+                return render(request, 'unsubscription_form.html', {'form' : form, 'message' : error_message})
+
+
+        
+
+
 
 def registration(request, validation_value) :
     error_message = ''