reg/views.py
changeset 20 9354ef8119c6
parent 19 115860e87238
child 21 a0f4aba61275
equal deleted inserted replaced
19:115860e87238 20:9354ef8119c6
     1 from datetime import datetime
     1 from datetime import datetime
       
     2 
       
     3 from django.http import Http404
       
     4 from django.utils.datastructures import MultiValueDictKeyError
     2 
     5 
     3 from django.contrib.auth.models import User
     6 from django.contrib.auth.models import User
     4 from django.contrib.auth import authenticate, login, logout
     7 from django.contrib.auth import authenticate, login, logout
     5 from django.contrib.auth.decorators import login_required
     8 from django.contrib.auth.decorators import login_required
     6 
     9 
     9 from workshop.reg.models import Event
    12 from workshop.reg.models import Event
    10 from workshop.reg import forms as reg_forms
    13 from workshop.reg import forms as reg_forms
    11 from workshop.reg import events as reg_events
    14 from workshop.reg import events as reg_events
    12 
    15 
    13 from workshop.feedback.models import Feedback
    16 from workshop.feedback.models import Feedback
    14 
       
    15 from django.http import HttpResponse
       
    16 
    17 
    17 def homepage(request):
    18 def homepage(request):
    18     """ see if the user is active.
    19     """ see if the user is active.
    19     If not, only show the re send activation email link.
    20     If not, only show the re send activation email link.
    20     else show all the options in homepage.
    21     else show all the options in homepage.
    38             email = form.cleaned_data['email']
    39             email = form.cleaned_data['email']
    39             password = form.cleaned_data['password']
    40             password = form.cleaned_data['password']
    40             username = User.objects.get(email__iexact=email).username
    41             username = User.objects.get(email__iexact=email).username
    41 
    42 
    42             user = authenticate(username=username, password=password)
    43             user = authenticate(username=username, password=password)
    43             login(request, user)
    44             if user.is_active:
    44             return redirect('/reg')
    45                 login(request, user)
       
    46                 return redirect('/reg')
       
    47             else:
       
    48                 return render_to_response('account_inactive.html', {'user':user, 'email':email})
    45         else:
    49         else:
    46             return render_to_response('login.html', {'user':user, 'form':form})
    50             return render_to_response('login.html', {'user':user, 'form':form})
    47     else:
    51     else:
    48         form = reg_forms.LoginForm()
    52         form = reg_forms.LoginForm()
    49         return render_to_response('login.html', {'user':user, 'form':form})
    53         return render_to_response('login.html', {'user':user, 'form':form})
    61 
    65 
    62     if request.method == "POST":
    66     if request.method == "POST":
    63         form = reg_forms.RegisterForm(request.POST)
    67         form = reg_forms.RegisterForm(request.POST)
    64         if form.is_valid():
    68         if form.is_valid():
    65             data = form.cleaned_data
    69             data = form.cleaned_data
    66             reg_events.create_user(email=data['email'], 
    70             new_user = reg_events.create_user(email=data['email'],
    67                                    password=data['password'],
    71                                               password=data['password'],
    68                                    first_name=data['first_name'],
    72                                               first_name=data['first_name'],
    69                                    last_name=data['last_name'], 
    73                                               last_name=data['last_name'], 
    70                                    gender=data['gender'], 
    74                                               gender=data['gender'], 
    71                                    profession=data['profession'], 
    75                                               profession=data['profession'], 
    72                                    affiliated_to=data['affiliated_to'], 
    76                                               affiliated_to=data['affiliated_to'], 
    73                                    interests=data['interests']
    77                                               interests=data['interests']
    74                                   )
    78                                              )
    75             return render_to_response('account_created.html')
    79             return redirect('/reg/account_created')
    76         else:
    80         else:
    77             return render_to_response('register.html', {'form':form})
    81             return render_to_response('register.html', {'form':form})
    78     else:
    82     else:
    79         form = reg_forms.RegisterForm()
    83         form = reg_forms.RegisterForm()
    80         return render_to_response('register.html', {'form':form})
    84         return render_to_response('register.html', {'form':form})
       
    85 
       
    86 def account_created(request):
       
    87     """ simply display a page.
       
    88     """
       
    89     
       
    90     user = request.user
       
    91     return render_to_response('account_created.html', {'user':user})
       
    92 
       
    93 def send_activation(request):
       
    94 
       
    95     try:
       
    96         email = request.GET['email']
       
    97     except MultiValueDictKeyError:
       
    98         raise Http404
       
    99 
       
   100     try:
       
   101         user = User.objects.get(email__iexact=email)
       
   102     except User.DoesNotExist:
       
   103         raise Http404
       
   104 
       
   105     if user.is_active:
       
   106         return redirect('/reg')
       
   107     
       
   108     profile = user.get_profile()
       
   109     activation_key = profile.activation_key
       
   110     reg_events.send_activation(user)
       
   111     
       
   112     return render_to_response('sent_activationkey.html', {'user':user})
    81 
   113 
    82 def create_event(request):
   114 def create_event(request):
    83     """ see if the user is a staff and only then let him do it.
   115     """ see if the user is a staff and only then let him do it.
    84     """
   116     """
    85 
   117 
   115     try:
   147     try:
   116         event = Event.objects.get(key__iexact=key)
   148         event = Event.objects.get(key__iexact=key)
   117     except Event.DoesNotExist:
   149     except Event.DoesNotExist:
   118         return redirect("/reg")
   150         return redirect("/reg")
   119 
   151 
   120     is_guest = False if user.is_authenticated() else True
   152     is_guest = False if user.is_authenticated() and user.is_active else True
   121     is_attendee = True if user in event.attendees.all() else False
   153     is_attendee = True if user in event.attendees.all() else False
   122     is_org = True if user in event.organizers.all() else False
   154     is_org = True if user in event.organizers.all() else False
   123 
   155 
   124     can_submit_feedback = False
   156     can_submit_feedback = False
   125     if not event.feedback_status == "0":
   157     if not event.feedback_status == "0":
   272     """ check if the user is logged in.
   304     """ check if the user is logged in.
   273     simply add him to the attendees list.
   305     simply add him to the attendees list.
   274     """
   306     """
   275 
   307 
   276     user = request.user
   308     user = request.user
   277     if user.is_authenticated():
   309     if user.is_authenticated() and user.is_active:
   278         try:
   310         try:
   279             event = Event.objects.get(key__iexact=event_key)
   311             event = Event.objects.get(key__iexact=event_key)
   280         except Event.DoesNotExist:
   312         except Event.DoesNotExist:
   281             return redirect("/reg")
   313             return redirect("/reg")
   282 
   314