implemented list toppers function
authornishanth
Thu, 22 Apr 2010 00:36:08 +0530
changeset 41 d424b9668a74
parent 40 89d29b1c42b5
child 42 007d87112911
implemented list toppers function
event/views.py
templates/list_toppers.html
urls.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]})
+
--- /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}}<br />
+<br />
+<table cellspacing="5" cellpadding="3">
+	<tr align="center">
+			<td> Name </td>
+			<td> Profession </td>
+			<td> Score </td>
+	</tr>
+	{% for quiz in sorted_quizzes %}
+	<tr align="center">
+			<td><a href="/quiz/ans_dump/{{admin_key}}/{{quiz.key}}/{{user.username}}">{{quiz.user.get_full_name}}</a></td>
+			<td>{{quiz.user.get_profile.profession}}</td>
+			<td>{{quiz.score}}</td>
+	</tr>
+	{% endfor %}
+{% endblock %}
--- a/urls.py	Wed Apr 21 21:58:16 2010 +0530
+++ b/urls.py	Thu Apr 22 00:36:08 2010 +0530
@@ -22,11 +22,13 @@
     (r'^$', event_views.event_home),
     (r'^event/admin/(\w+)$', event_views.event_admin),
     (r'^event/create/(\w+)$', event_views.event_create),
+
     (r'^feedback/submit$', feed_views.submit_feedback),
     (r'^feedback/open/(\w+)$', feed_views.open_feedback),
     (r'^feedback/close/(\w+)$', feed_views.close_feedback),
     (r'^feedback/list/(\w+)$', feed_views.list_feedbacks),
     (r'^feedback/report/(\w+)$', feed_views.view_report),
+
     (r'^quiz/open/(\w+)$', event_views.open_quiz),
     (r'^quiz/close/(\w+)$', event_views.close_quiz),
     (r'^quiz$', quiz_views.start_page),
@@ -34,4 +36,6 @@
     (r'^quiz/start/$', quiz_views.start_quiz),
     (r'^quiz/answer/(\w+)$', quiz_views.answer),
     (r'^quiz/complete/$', quiz_views.quiz_complete),
+
+    (r'^quiz/toppers/(\w+)/(\w+)$', event_views.list_toppers),
 )