summaryrefslogtreecommitdiff
path: root/yaksh/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'yaksh/views.py')
-rw-r--r--yaksh/views.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/yaksh/views.py b/yaksh/views.py
index 755b33b..4724f98 100644
--- a/yaksh/views.py
+++ b/yaksh/views.py
@@ -1164,6 +1164,33 @@ def complete(request, reason=None, attempt_num=None, questionpaper_id=None):
else:
return my_redirect('/exam/')
+@login_required
+def statistics(request, questionpaper_id):
+ user = request.user
+ if not is_moderator(user):
+ raise Http404('You are not allowed to view this page')
+ questions_answered = []
+ question_stats = {}
+ papers = AnswerPaper.objects.filter(question_paper_id=questionpaper_id,
+ status='completed')
+ for paper in papers:
+ questions_answered += paper.questions_answered.split('|')
+ quiz_name = paper.question_paper.quiz.description
+ questions_answered = collections.Counter(map(int, filter(None,
+ questions_answered)))
+ total_attempt = papers.count()
+ questions = Question.objects.filter(id__in=paper.questions.split('|')).\
+ order_by('type')
+ for question in questions:
+ if question.id in questions_answered:
+ question_stats[question] = questions_answered[question.id]
+ else:
+ question_stats[question] = 0
+ context = {'question_stats': question_stats, 'quiz_name': quiz_name,
+ 'total': total_attempt}
+ return my_render_to_response('yaksh/statistics_question.html', context,
+ context_instance=RequestContext(request))
+
@login_required
def monitor(request, questionpaper_id=None):
@@ -1520,3 +1547,5 @@ def design_questionpaper(request):
context = {'form': form}
return my_render_to_response('yaksh/design_questionpaper.html',
context, context_instance=ci)
+
+