def get_max_score(self):
return len(self._question_ids())
+ def progress(self):
+ """
+ Returns the number of questions answered so far and the total number of
+ questions.
+ """
+ answered = len(json.loads(self.user_answers))
+ total = self.get_max_score
+ return (answered, total)
+
class Question(models.Model):
"""
def get_form(self, form_class):
if self.logged_in_user:
self.question = self.sitting.get_first_question()
+ self.progress = self.sitting.progress()
else:
self.question = self.anon_next_question()
+ self.progress = self.anon_sitting_progress()
if self.question.__class__ is Essay_Question:
form_class = EssayForm
context['quiz'] = self.quiz
if hasattr(self, 'previous'):
context['previous'] = self.previous
+ if hasattr(self, 'progress'):
+ context['progress'] = self.progress
return context
def form_valid_user(self, form):
next_question_id = self.request.session[self.quiz.anon_q_list()][0]
return Question.objects.get_subclass(id=next_question_id)
+ def anon_sitting_progress(self):
+ total = len(self.request.session[self.quiz.anon_q_data()]['order'])
+ answered = total - len(self.request.session[self.quiz.anon_q_list()])
+ return (answered, total)
+
def form_valid_anon(self, form):
guess = form.cleaned_data['answers']
is_correct = self.question.check_if_correct(guess)