diff options
Diffstat (limited to 'allotter/views.py')
-rw-r--r-- | allotter/views.py | 121 |
1 files changed, 91 insertions, 30 deletions
diff --git a/allotter/views.py b/allotter/views.py index abfec2e..743c373 100644 --- a/allotter/views.py +++ b/allotter/views.py @@ -5,6 +5,11 @@ from django.shortcuts import render, redirect from django.template import RequestContext from django.http import Http404 +#TODO: Remove this if possible +from django.http import HttpResponseRedirect +from django.core.urlresolvers import reverse + +from django.contrib.auth.models import User from allotter.models import Profile, Option, Exam from allotter.forms import UserLoginForm @@ -32,50 +37,106 @@ def user_login(request): return render_to_response('allotter/login.html', context, context_instance=RequestContext(request)) - -@login_required -def apply(request): - user = request.user - if not(user.is_authenticated()): - return redirect('/allotter/login/') + + +def get_options(user): user_profile = user.get_profile() user_application = user_profile.application np = user_application.np #Number of Papers - first_paper = user_application.first_paper - options_available_first = Option.objects.filter(exam__exam_name=first_paper).distinct() - oafl = len(options_available_first) - if np == 2: + first_paper = user_application.first_paper #First Paper Name + options_available_first = Option.objects.filter(exam__exam_name=first_paper).distinct() #Options for First paper + if(np == 2): + second_paper = user_application.second_paper + options_available_second = Option.objects.filter(exam__exam_name=second_paper).distinct() + + options_available = list(set(options_available_first + options_available_second)) + + +## Retrieves the user details from the database and passes it for generation +## of Application Template + +##TODO: Display a single list of options for students who have taken two exams. + +def get_details(user, error_message = ""): + user_profile = user.get_profile() + user_application = user_profile.application + np = user_application.np #Number of Papers + first_paper = user_application.first_paper #First Paper Name + options_available_first = Option.objects.filter(exam__exam_name=first_paper).distinct() #Options for First paper + oafl = len(options_available_first) + if np == 2: #If written two exams second_paper = user_application.second_paper options_available_second = Option.objects.filter(exam__exam_name=second_paper).distinct() oasl = len(options_available_second) context = {'user': user, 'first_paper': first_paper, - 'options_available_first' : options_available_first,'np' : np, - 'oafl': oafl, 'oasl': oasl, 'second_paper': second_paper, - 'options_available_second' : options_available_second} - ci = RequestContext(request) - return render_to_response('allotter/apply.html', context, - context_instance=ci) - - #form = ApplicationForm(logged_user=user) - context = {'user': user, 'first_paper': first_paper, + 'options_available_first' : options_available_first, + 'second_paper': second_paper, + 'options_available_second' : options_available_second, + 'np' : np,'oafl': oafl, 'oasl': oasl, + 'error_message': error_message} + else: #If written only one exam + context = {'user': user, 'first_paper': first_paper, 'options_available_first' : options_available_first, - 'oafl': oafl, 'np' : np} - ci = RequestContext(request) + 'oafl': oafl, 'np' : np, 'error_message' : error_message} + return context + +@login_required +def apply(request): + user = request.user + if not(user.is_authenticated()): + return redirect('/allotter/login/') + + context = get_details(user) + ci = RequestContext(request) + return render_to_response('allotter/apply.html', context, - context_instance=ci) - - -""" -def submit(request): - pass + context_instance=ci) + +##Logouts the user. -def quit(request): - pass - def user_logout(request): logout(request) return redirect ('/allotter/') + +#TODO: Extensive Testing + +def submit(request, reg_no): + user = get_object_or_404(User, username=reg_no) + user_profile = user.get_profile() + user_application = user_profile.application + first_paper = user_application.first_paper #First Paper Name + options_available_first = Option.objects.filter(exam__exam_name=first_paper).distinct() #Options for First paper + options_list = "" + for option in options_available_first: + + #TODO: Dealing with none option, Dealing with all nones + selected_option = Option.objects.get(pk=request.POST[option.opt_name]) + #except (KeyError, Option.DoesNotExist): + # Redisplay the application form with error message. + # error_message = "You didn't select a choice." + # context = get_detail(user, error_message) + # return render_to_response('allotter/apply.html', context, + # context_instance=RequestContext(request)) + #else: + + options_list += selected_option.opt_name + + user_application.options_selected += options_list + user_application.save() + return HttpResponseRedirect(reverse('allotter.views.complete', args=(reg_no,))) + #return redirect('/allotter/complete/') + +#User Application + +def complete(request, reg_no): + context = {'user': reg_no} + ci = RequestContext(request) + return render_to_response('allotter/complete.html', context) + +"""def quit(request): + pass + """ """def user_register(request): |