reg/views.py
changeset 20 9354ef8119c6
parent 19 115860e87238
child 21 a0f4aba61275
--- 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: