event/views.py
changeset 41 d424b9668a74
parent 39 0fa055b8ea98
child 42 007d87112911
equal deleted inserted replaced
40:89d29b1c42b5 41:d424b9668a74
       
     1 from django.db.models import Sum
     1 from django.http import Http404
     2 from django.http import Http404
     2 from django.shortcuts import render_to_response, redirect
     3 from django.shortcuts import render_to_response, redirect
     3 
     4 
     4 from offline.settings import ADMIN_KEY
     5 from offline.settings import ADMIN_KEY
     5 
     6 
     6 from offline.event.models import Event
     7 from offline.event.models import Event
     7 from offline.event.forms import EventCreateForm
     8 from offline.event.forms import EventCreateForm
     8 
     9 
       
    10 from offline.quiz.models import Quiz
     9 from offline.quiz.utils import correct_quiz
    11 from offline.quiz.utils import correct_quiz
    10 
    12 
    11 num2name = {"11" : "Day 1 Quiz 1",
    13 num2name = {"11" : "Day 1 Quiz 1",
    12             "12" : "Day 1 Quiz 2",
    14             "12" : "Day 1 Quiz 2",
    13             "21" : "Day 2 Quiz 1",
    15             "21" : "Day 2 Quiz 1",
   120     for quiz in event_quizzes:
   122     for quiz in event_quizzes:
   121         correct_quiz(quiz)
   123         correct_quiz(quiz)
   122 
   124 
   123     return render_to_response("close_quiz.html", {"admin_key":ADMIN_KEY, "quiz_name":num2name[quiz_num]})
   125     return render_to_response("close_quiz.html", {"admin_key":ADMIN_KEY, "quiz_name":num2name[quiz_num]})
   124 
   126 
       
   127 def list_toppers(request, admin_key, quiz_num):
       
   128     """ check for admin key
       
   129     Then check for quiz_num in ['11', ..]
       
   130     then give appropriate response.
       
   131     """
       
   132 
       
   133     if not admin_key == ADMIN_KEY:
       
   134         raise Http404
       
   135 
       
   136     try:
       
   137         event = Event.objects.all()[0]
       
   138     except IndexError:
       
   139         return redirect('/event/create/%s'%ADMIN_KEY)
       
   140 
       
   141     if quiz_num not in ["11", "12", "21"]:
       
   142         raise Http404
       
   143 
       
   144     quizzes = Quiz.objects.filter(event=event,quiz_num=quiz_num)
       
   145     quizzes_with_scores = quizzes.annotate(score=Sum('que_answered__is_correct'))
       
   146     sorted_quizzes = quizzes_with_scores.order_by("score").reverse()
       
   147 
       
   148     return render_to_response("list_toppers.html", {"sorted_quizzes":sorted_quizzes, "event":event, "quiz_name":num2name[quiz_num]})
       
   149