# HG changeset patch
# User nishanth
# Date 1271876768 -19800
# Node ID d424b9668a74f2f08440f21dbbde2f0ac8d560d6
# Parent 89d29b1c42b57778e169e81b3bee3fefa8f75048
implemented list toppers function
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]})
+
diff -r 89d29b1c42b5 -r d424b9668a74 templates/list_toppers.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/list_toppers.html Thu Apr 22 00:36:08 2010 +0530
@@ -0,0 +1,18 @@
+{% extends 'base.html' %}
+{% block content %}
+List of toppers for {{quiz_name}} of {{event.title}}
+
+
Name | +Profession | +Score | +
{{quiz.user.get_full_name}} | +{{quiz.user.get_profile.profession}} | +{{quiz.score}} | +