Skip to content

Commit 984143e

Browse files
remove answer model, update question
1 parent 5601fbe commit 984143e

File tree

7 files changed

+57
-26
lines changed

7 files changed

+57
-26
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Generated by Django 3.2.7 on 2021-10-05 14:47
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('classroom', '0006_readingquestion_passage'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='readingquestion',
15+
name='answers',
16+
field=models.CharField(blank=True, max_length=255),
17+
),
18+
migrations.DeleteModel(
19+
name='ReadingAnswer',
20+
),
21+
]

classroom/models/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
from .classroom import Classroom
2-
from .reading_answer import ReadingAnswer
32
from .reading_exercise import ReadingExercise
43
from .reading_question import ReadingQuestion

classroom/models/abstracts/answer.py

Lines changed: 0 additions & 9 deletions
This file was deleted.

classroom/models/abstracts/question.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,17 @@ class Types(models.TextChoices):
99
YES_NO = 'yes_no', _('Yes / No / Not given')
1010
FILL_BLANK = 'fill_blank', _('Fill in the blank')
1111

12+
ANSWERS_DELEMITER = ' | '
13+
_TRUE = 'TRUE'
14+
_FALSE = 'FALSE'
15+
_YES = 'YES'
16+
_NO = 'NO'
17+
_NOT_GIVEN = 'NOT_GIVEN'
18+
1219
from_number = models.PositiveSmallIntegerField()
1320
to_number = models.PositiveSmallIntegerField(null=True)
1421
question_type = models.CharField(max_length=30, choices=Types.choices)
22+
answers = models.CharField(max_length=255, blank=True)
1523
correct_answer = models.CharField(max_length=255)
1624

1725
class Meta:
@@ -20,8 +28,33 @@ class Meta:
2028
def __str__(self):
2129
return f'{self.get_question_number_display()} | {self.question_type} | {self.correct_answer[:50]}'
2230

31+
def save(self, *args, **kwargs):
32+
self.set_default_answers()
33+
return super().save(*args, **kwargs)
34+
2335
def get_question_number_display(self):
2436
display = str(self.from_number)
2537
if self.to_number is not None and self.to_number != self.from_number:
2638
display += f' - {self.to_number}'
2739
return display
40+
41+
def set_default_answers(self):
42+
if self.is_true_false():
43+
self.answers = self.ANSWERS_DELEMITER.join([
44+
self._TRUE, self._FALSE, self._NOT_GIVEN
45+
])
46+
elif self.is_yes_no():
47+
self.answers = self.ANSWERS_DELEMITER.join([
48+
self._YES, self._NO, self._NOT_GIVEN
49+
])
50+
elif not self.is_multiple_choice():
51+
self.answers = ''
52+
53+
def is_true_false(self):
54+
return self.question_type == self.Types.TRUE_FALSE
55+
56+
def is_yes_no(self):
57+
return self.question_type == self.Types.YES_NO
58+
59+
def is_multiple_choice(self):
60+
return self.question_type == self.Types.MULTIPLE_CHOICE

classroom/models/reading_answer.py

Lines changed: 0 additions & 14 deletions
This file was deleted.

classroom/serializers/question.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ class Meta:
99
model = ReadingQuestion
1010
fields = [
1111
'pk', 'url', 'exercise', 'passage',
12-
'from_number', 'to_number', 'question_type', 'correct_answer',
12+
'from_number', 'to_number', 'question_type',
13+
'answers', 'correct_answer',
1314
]
1415
extra_kwargs = {
1516
'url': {'view_name': 'reading-question-detail'},

keep_learning/settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@
214214
},
215215
'TEST_REQUEST_DEFAULT_FORMAT': 'json',
216216
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
217-
'PAGE_SIZE': 25,
217+
'PAGE_SIZE': 40, # Each exercise has 40 questions
218218
'DEFAULT_FILTER_BACKENDS': [
219219
'django_filters.rest_framework.DjangoFilterBackend',
220220
'rest_framework.filters.OrderingFilter',

0 commit comments

Comments
 (0)