added account_inactive and resend_activationkey functionalities
authornishanth
Tue, 13 Apr 2010 12:03:12 +0530
changeset 20 9354ef8119c6
parent 19 115860e87238
child 21 a0f4aba61275
added account_inactive and resend_activationkey functionalities
reg/events.py
reg/site/urls.py
reg/views.py
templates/404.html
templates/account_created.html
templates/account_inactive.html
templates/sent_activationkey.html
--- a/reg/events.py	Tue Apr 13 10:50:29 2010 +0530
+++ b/reg/events.py	Tue Apr 13 12:03:12 2010 +0530
@@ -37,6 +37,12 @@
         except IntegrityError:
             pass
 
+def send_activation(user):
+    """ get key from profile and send an email.
+    """
+
+    print user.get_profile().activation_key
+
 def create_event(title, description, start_date, stop_date, created_by=None):
     """ make an event and save it.
     """
--- a/reg/site/urls.py	Tue Apr 13 10:50:29 2010 +0530
+++ b/reg/site/urls.py	Tue Apr 13 12:03:12 2010 +0530
@@ -7,6 +7,8 @@
     (r'^login/$', reg_views.user_login),
     (r'^logout/$', reg_views.user_logout),
     (r'^register/$', reg_views.user_register),
+    (r'^account_created/$', reg_views.account_created),                       
+    (r'^send_activation/$', reg_views.send_activation),
     (r'^profile/view/$', reg_views.view_profile),
     (r'^profile/edit/$', reg_views.edit_profile),                       
     (r'^password_reset/$', reg_views.reset_password),
--- a/reg/views.py	Tue Apr 13 10:50:29 2010 +0530
+++ b/reg/views.py	Tue Apr 13 12:03:12 2010 +0530
@@ -1,5 +1,8 @@
 from datetime import datetime
 
+from django.http import Http404
+from django.utils.datastructures import MultiValueDictKeyError
+
 from django.contrib.auth.models import User
 from django.contrib.auth import authenticate, login, logout
 from django.contrib.auth.decorators import login_required
@@ -12,8 +15,6 @@
 
 from workshop.feedback.models import Feedback
 
-from django.http import HttpResponse
-
 def homepage(request):
     """ see if the user is active.
     If not, only show the re send activation email link.
@@ -40,8 +41,11 @@
             username = User.objects.get(email__iexact=email).username
 
             user = authenticate(username=username, password=password)
-            login(request, user)
-            return redirect('/reg')
+            if user.is_active:
+                login(request, user)
+                return redirect('/reg')
+            else:
+                return render_to_response('account_inactive.html', {'user':user, 'email':email})
         else:
             return render_to_response('login.html', {'user':user, 'form':form})
     else:
@@ -63,22 +67,50 @@
         form = reg_forms.RegisterForm(request.POST)
         if form.is_valid():
             data = form.cleaned_data
-            reg_events.create_user(email=data['email'], 
-                                   password=data['password'],
-                                   first_name=data['first_name'],
-                                   last_name=data['last_name'], 
-                                   gender=data['gender'], 
-                                   profession=data['profession'], 
-                                   affiliated_to=data['affiliated_to'], 
-                                   interests=data['interests']
-                                  )
-            return render_to_response('account_created.html')
+            new_user = reg_events.create_user(email=data['email'],
+                                              password=data['password'],
+                                              first_name=data['first_name'],
+                                              last_name=data['last_name'], 
+                                              gender=data['gender'], 
+                                              profession=data['profession'], 
+                                              affiliated_to=data['affiliated_to'], 
+                                              interests=data['interests']
+                                             )
+            return redirect('/reg/account_created')
         else:
             return render_to_response('register.html', {'form':form})
     else:
         form = reg_forms.RegisterForm()
         return render_to_response('register.html', {'form':form})
 
+def account_created(request):
+    """ simply display a page.
+    """
+    
+    user = request.user
+    return render_to_response('account_created.html', {'user':user})
+
+def send_activation(request):
+
+    try:
+        email = request.GET['email']
+    except MultiValueDictKeyError:
+        raise Http404
+
+    try:
+        user = User.objects.get(email__iexact=email)
+    except User.DoesNotExist:
+        raise Http404
+
+    if user.is_active:
+        return redirect('/reg')
+    
+    profile = user.get_profile()
+    activation_key = profile.activation_key
+    reg_events.send_activation(user)
+    
+    return render_to_response('sent_activationkey.html', {'user':user})
+
 def create_event(request):
     """ see if the user is a staff and only then let him do it.
     """
@@ -117,7 +149,7 @@
     except Event.DoesNotExist:
         return redirect("/reg")
 
-    is_guest = False if user.is_authenticated() else True
+    is_guest = False if user.is_authenticated() and user.is_active else True
     is_attendee = True if user in event.attendees.all() else False
     is_org = True if user in event.organizers.all() else False
 
@@ -274,7 +306,7 @@
     """
 
     user = request.user
-    if user.is_authenticated():
+    if user.is_authenticated() and user.is_active:
         try:
             event = Event.objects.get(key__iexact=event_key)
         except Event.DoesNotExist:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/404.html	Tue Apr 13 12:03:12 2010 +0530
@@ -0,0 +1,5 @@
+{% extends "base.html" %}
+{% block content %}
+The page you requested does not exist.
+<a href="/reg">Click here</a> to return to home page.
+{% endblock %}
--- a/templates/account_created.html	Tue Apr 13 10:50:29 2010 +0530
+++ b/templates/account_created.html	Tue Apr 13 12:03:12 2010 +0530
@@ -1,7 +1,5 @@
 {% extends "base.html" %}
 {% block content %}
-The account has been created.<br />
-<a href="/reg/activate/{{activation_key}}">Click here to activate your account.</a><br />
-This link will be sent to your email.<br />
+Account has been created and an activation email has been sent to your email address.<br />
 <a href="/reg/login">click here</a> to go to login page.
 {% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/account_inactive.html	Tue Apr 13 12:03:12 2010 +0530
@@ -0,0 +1,6 @@
+{% extends "base.html" %}
+{% block content %}
+Your account is inactive. An activation email has been sent to your email address.<br />
+<a href="/reg/send_activation/?email={{email}}">Click here</a> to resend the activation email.<br />
+<a href="/reg">click here</a> to go to home page.
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/sent_activationkey.html	Tue Apr 13 12:03:12 2010 +0530
@@ -0,0 +1,5 @@
+{% extends "base.html" %}
+{% block content %}
+Activation email has been sent to your email address.<br />
+<a href="/reg">click here</a> to go to home page.
+{% endblock %}