# HG changeset patch # User nishanth # Date 1271777814 -19800 # Node ID ad51f38d033904b25a2d9940c0da71725691d0a4 # Parent 99af908a41746aa2c2ad967e945db7e178d930a9 implemented the start quiz functionality diff -r 99af908a4174 -r ad51f38d0339 quiz/models.py --- a/quiz/models.py Tue Apr 20 19:20:15 2010 +0530 +++ b/quiz/models.py Tue Apr 20 21:06:54 2010 +0530 @@ -35,6 +35,7 @@ user = models.ForeignKey(User) event = models.ForeignKey(Event) user_ip = models.CharField(max_length=15) + key = models.CharField(max_length=10) quiz_num = models.CharField(max_length=2) que_remaining = models.CharField(max_length=100) diff -r 99af908a4174 -r ad51f38d0339 quiz/views.py --- a/quiz/views.py Tue Apr 20 19:20:15 2010 +0530 +++ b/quiz/views.py Tue Apr 20 21:06:54 2010 +0530 @@ -1,5 +1,6 @@ +import random + from django.db import IntegrityError - from django.http import Http404 from django.contrib.auth.models import User @@ -10,8 +11,7 @@ from offline.event.models import Event from offline.quiz.utils import gen_key -from offline.quiz.models import Profile - +from offline.quiz.models import Profile, QuestionBank, Quiz from offline.quiz.forms import UserRegisterForm def start_page(request): @@ -31,6 +31,13 @@ user = request.user if user.is_authenticated(): return redirect("/quiz/start/%s"%user.username) + else: + try: + ip = request.META['REMOTE_ADDR'] + Quiz.objects.get(user_ip=ip, quiz_num=event.quiz_status) + return redirect("/quiz/complete") + except Quiz.DoesNotExist: + pass if request.method == "POST": form = UserRegisterForm(request.POST) @@ -71,7 +78,7 @@ then make his quiz paper and redirect to the right question. """ - user = repuest.user + user = request.user if not user.username == username: raise Http404 @@ -83,5 +90,18 @@ if event.quiz_status == "00": raise Http404 + try: + old_quiz = Quiz.objects.get(event=event,user=user, quiz_num=event.quiz_status) + return redirect("/quiz/answer/%s/%s"%(username,old_quiz.key)) + except Quiz.DoesNotExist: + ip = request.META['REMOTE_ADDR'] + key = gen_key(10) + new_quiz = Quiz(event=event, user=user, quiz_num=event.quiz_status, user_ip=ip, key=key) + available_que_ids = [ str(_.id) for _ in QuestionBank.objects.filter(quiz_num=event.quiz_status) ] + random.shuffle(available_que_ids) + new_quiz.que_remaining = "|".join(available_que_ids) + new_quiz.save() + return redirect("/quiz/answer/%s/%s"%(username,new_quiz.key)) + diff -r 99af908a4174 -r ad51f38d0339 urls.py --- a/urls.py Tue Apr 20 19:20:15 2010 +0530 +++ b/urls.py Tue Apr 20 21:06:54 2010 +0530 @@ -29,4 +29,5 @@ (r'^feedback/report/(\w+)$', feed_views.view_report), (r'^quiz$', quiz_views.start_page), (r'^quiz/start/(\w+)$', quiz_views.start_quiz), + (r'^quiz/answer/(\w+)/(\w+)$', quiz_views.answer), )