/.coveragerc
/coverage_html_report/
/htmlcov/
+/uploads/
\ No newline at end of file
"are set?")
max_questions = models.PositiveIntegerField(blank=True, null=True,
- help_text="Number of questions to be "
- "answered on each attempt")
+ help_text="Number of questions"
+ " to be answered on"
+ " each attempt.")
answers_at_end = models.BooleanField(blank=False,
default=False,
def get_questions(self):
question_ids = self._question_ids()
return sorted(
- self.quiz.question_set.filter(id__in=question_ids).select_subclasses(),
+ self.quiz.question_set.filter(id__in=question_ids)
+ .select_subclasses(),
key=lambda q: question_ids.index(q.id))
@property
def get_max_score(self):
return len(self._question_ids())
+
class Question(models.Model):
"""
Base class for all question types.
return {'previous': {'answers': answers},
'user_was_incorrect': user_was_incorrect}
+
@register.filter
def answer_choice_to_string(question, answer):
return question.answer_choice_to_string(answer)
self.question1 = MCQuestion.objects.create(id=1, content='squawk')
self.question1.quiz.add(self.quiz1)
+ self.answer1 = Answer.objects.create(id=123,
+ question=self.question1,
+ content='bing',
+ correct=False)
+
sitting1 = Sitting.objects.new_sitting(self.student, self.quiz1)
sitting2 = Sitting.objects.new_sitting(self.student, self.quiz2)
sitting1.complete = True
self.assertContains(response, 'button')
self.assertNotContains(response, 'Correct')
- response = self.client.get('/marking/3/', {'id': 3})
+ response = self.client.post('/marking/3/', {'qid': 3})
self.assertContains(response, 'Correct')
- response = self.client.get('/marking/3/', {'id': 3})
+ response = self.client.post('/marking/3/', {'qid': 3})
self.assertNotContains(response, 'Correct')
self.request.session.set_expiry(259200) # expires after 3 days
questions = self.quiz.get_questions()
question_list = [question.id for question in questions]
+
if self.quiz.random_order is True:
random.shuffle(question_list)
- if self.quiz.max_questions and self.quiz.max_questions < len(question_list):
+
+ if all(self.quiz.max_questions,
+ self.quiz.max_questions < len(question_list)):
question_list = question_list[:self.quiz.max_questions]
# session score for anon users
# session list of question order and incorrect questions
self.request.session[self.quiz.anon_q_data()] = dict(
- incorrect_questions = [],
- order = question_list,
+ incorrect_questions=[],
+ order=question_list,
)
return self.request.session[self.quiz.anon_q_list()]
anon_session_score(self.request.session, 1, 1)
else:
anon_session_score(self.request.session, 0, 1)
- self.request.session[self.quiz.anon_q_data()]['incorrect_questions'].append(self.question.id)
+ self.request\
+ .session[self.quiz.anon_q_data()]['incorrect_questions']\
+ .append(self.question.id)
self.previous = {}
if self.quiz.answers_at_end is not True:
if self.quiz.answers_at_end:
results['questions'] = sorted(
- self.quiz.question_set.filter(id__in=q_order).select_subclasses(),
- key=lambda q: q_order.index(q.id)
- )
- results['incorrect_questions'] = self.request.session[self.quiz.anon_q_data()]['incorrect_questions']
+ self.quiz.question_set.filter(id__in=q_order)
+ .select_subclasses(),
+ key=lambda q: q_order.index(q.id))
+
+ results['incorrect_questions'] = (
+ self.request
+ .session[self.quiz.anon_q_data()]['incorrect_questions'])
+
else:
results['previous'] = self.previous