summaryrefslogtreecommitdiff
path: root/allotter/views.py
diff options
context:
space:
mode:
authorparth2012-03-20 02:35:33 +0530
committerparth2012-03-20 02:35:33 +0530
commit64f6b14cc6c1ee3cec4c2d65e6a130441555b6b4 (patch)
tree76a2b19643f1ae9ddbab423b3ad211be9f5a0fe2 /allotter/views.py
parentd1ac4284c62ae5ad2c85eed02e831fa9d400a4ef (diff)
parentc78804ce5141565ee0e2a64e7f92aaaa126f30e0 (diff)
downloadaloha-64f6b14cc6c1ee3cec4c2d65e6a130441555b6b4.tar.gz
aloha-64f6b14cc6c1ee3cec4c2d65e6a130441555b6b4.tar.bz2
aloha-64f6b14cc6c1ee3cec4c2d65e6a130441555b6b4.zip
Merge remote-tracking branch 'origin'
Diffstat (limited to 'allotter/views.py')
-rw-r--r--allotter/views.py121
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):