Skip to content

Commit 04216e2

Browse files
Merge pull request #17 from rockstarr-programmerr/dev
Dev
2 parents b4884be + bbf962c commit 04216e2

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

classroom/business/all/student_report.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,21 +91,40 @@ def passage_report(self, questions, answers, passage):
9191

9292
score = 0
9393
details = []
94+
related_answers = []
95+
related_remains = 0
96+
9497
for question in questions:
9598
detail = self.new_detail()
9699
answer = self.get_answer(answers, question)
100+
possible_answers = question.get_answers_content()
97101

98102
detail['question_number'] = question.number
99-
detail['possible_answers'] = question.get_answers_content()
103+
detail['possible_answers'] = possible_answers
104+
105+
is_related = len(possible_answers) > 1
106+
if not is_related:
107+
related_answers = []
108+
elif not related_remains:
109+
related_remains = len(possible_answers)
110+
related_answers = []
100111

112+
is_correct = False
101113
if answer:
102-
is_correct = question.check_answer(answer.content)
114+
is_correct = question.check_answer(answer.content, related_answers=related_answers)
103115
if is_correct:
104116
score += 1
105117

106118
detail['submitted_answer'] = answer.content
107119
detail['is_correct'] = is_correct
108120

121+
if related_remains:
122+
related_remains -= 1
123+
if not related_remains:
124+
related_answers = []
125+
elif answer and is_correct:
126+
related_answers.append(answer.content)
127+
109128
details.append(detail)
110129

111130
return score, details

classroom/models/abstracts/question.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def get_choices_content(self):
6868
def generate_choices_from_list(cls, choices):
6969
return cls._DELEMITER.join(choices)
7070

71-
def check_answer(self, answer):
71+
def check_answer(self, answer, related_answers=None):
7272
# NOTE: don't use .values_list('content', flat=True) here,
7373
# because it will not utilize .prefetch_related('answers'),
7474
# which lead to more DB queries
@@ -78,7 +78,10 @@ def check_answer(self, answer):
7878
if self.is_fill_blank():
7979
return self.check_fill_blank(answer, possible_answers)
8080
else:
81-
return answer in possible_answers
81+
if related_answers:
82+
return answer in possible_answers and answer not in related_answers
83+
else:
84+
return answer in possible_answers
8285

8386
@staticmethod
8487
def check_fill_blank(answer, possible_answers):

0 commit comments

Comments
 (0)