diff -r 115860e87238 -r 9354ef8119c6 reg/views.py --- 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: