diff -r 89d29b1c42b5 -r d424b9668a74 event/views.py --- a/event/views.py Wed Apr 21 21:58:16 2010 +0530 +++ b/event/views.py Thu Apr 22 00:36:08 2010 +0530 @@ -1,3 +1,4 @@ +from django.db.models import Sum from django.http import Http404 from django.shortcuts import render_to_response, redirect @@ -6,6 +7,7 @@ from offline.event.models import Event from offline.event.forms import EventCreateForm +from offline.quiz.models import Quiz from offline.quiz.utils import correct_quiz num2name = {"11" : "Day 1 Quiz 1", @@ -122,3 +124,26 @@ return render_to_response("close_quiz.html", {"admin_key":ADMIN_KEY, "quiz_name":num2name[quiz_num]}) +def list_toppers(request, admin_key, quiz_num): + """ check for admin key + Then check for quiz_num in ['11', ..] + then give appropriate response. + """ + + if not admin_key == ADMIN_KEY: + raise Http404 + + try: + event = Event.objects.all()[0] + except IndexError: + return redirect('/event/create/%s'%ADMIN_KEY) + + if quiz_num not in ["11", "12", "21"]: + raise Http404 + + quizzes = Quiz.objects.filter(event=event,quiz_num=quiz_num) + quizzes_with_scores = quizzes.annotate(score=Sum('que_answered__is_correct')) + sorted_quizzes = quizzes_with_scores.order_by("score").reverse() + + return render_to_response("list_toppers.html", {"sorted_quizzes":sorted_quizzes, "event":event, "quiz_name":num2name[quiz_num]}) +