Skip to content

Commit 469a65f

Browse files
authored
Merge pull request #49 from AvaCodeSolutions/feat/19/waiting-period-field-4-course-content
feat: #19 add waiting_period field for the CourseContent model
2 parents b0b7a8c + 57e23f0 commit 469a65f

3 files changed

Lines changed: 36 additions & 6 deletions

File tree

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Generated by Django 5.2.8 on 2025-11-21 14:45
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
dependencies = [
8+
("django_email_learning", "0002_blockedemail_alter_imapconnection_port"),
9+
]
10+
11+
operations = [
12+
migrations.AddField(
13+
model_name="coursecontent",
14+
name="waiting_period",
15+
field=models.IntegerField(
16+
default=5,
17+
help_text="Waiting period in seconds after previous content is sent or submited.",
18+
),
19+
preserve_default=False,
20+
),
21+
]

django_email_learning/models.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,9 @@ class CourseContent(models.Model):
215215
)
216216
lesson = models.ForeignKey(Lesson, null=True, blank=True, on_delete=models.CASCADE)
217217
quiz = models.ForeignKey(Quiz, null=True, blank=True, on_delete=models.CASCADE)
218+
waiting_period = models.IntegerField(
219+
help_text="Waiting period in seconds after previous content is sent or submited."
220+
)
218221

219222
def __str__(self) -> str:
220223
if self.type == "lesson" and self.lesson:

tests/test_models/test_course_content.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,47 +5,53 @@
55

66
def test_no_lesson_for_content_of_type_lesson_raises_error(course):
77
with pytest.raises(ValidationError):
8-
CourseContent.objects.create(course=course, priority=1, type="lesson")
8+
CourseContent.objects.create(
9+
course=course, priority=1, type="lesson", waiting_period=10
10+
)
911

1012

1113
def test_no_quiz_for_content_of_type_quiz_raises_error(course):
1214
with pytest.raises(ValidationError):
13-
CourseContent.objects.create(course=course, priority=1, type="quiz")
15+
CourseContent.objects.create(
16+
course=course, priority=1, type="quiz", waiting_period=10
17+
)
1418

1519

1620
def test_lesson_content_for_content_of_type_quiz_raises_error(course, lesson):
1721
with pytest.raises(ValidationError):
1822
CourseContent.objects.create(
19-
course=course, priority=1, type="quiz", lesson=lesson
23+
course=course, priority=1, type="quiz", lesson=lesson, waiting_period=10
2024
)
2125

2226

2327
def test_quiz_content_for_content_of_type_lesson_raises_error(course, quiz):
2428
with pytest.raises(ValidationError):
2529
CourseContent.objects.create(
26-
course=course, priority=1, type="lesson", quiz=quiz
30+
course=course, priority=1, type="lesson", quiz=quiz, waiting_period=10
2731
)
2832

2933

3034
def test_valid_lesson_content_creation(course, lesson):
3135
content = CourseContent.objects.create(
32-
course=course, priority=1, type="lesson", lesson=lesson
36+
course=course, priority=1, type="lesson", lesson=lesson, waiting_period=10
3337
)
3438
assert content.id is not None
3539
assert content.course == course
3640
assert content.priority == 1
3741
assert content.type == "lesson"
3842
assert content.lesson == lesson
3943
assert content.quiz is None
44+
assert content.waiting_period == 10
4045

4146

4247
def test_valid_quiz_content_creation(course, quiz):
4348
content = CourseContent.objects.create(
44-
course=course, priority=1, type="quiz", quiz=quiz
49+
course=course, priority=1, type="quiz", quiz=quiz, waiting_period=10
4550
)
4651
assert content.id is not None
4752
assert content.course == course
4853
assert content.priority == 1
4954
assert content.type == "quiz"
5055
assert content.quiz == quiz
5156
assert content.lesson is None
57+
assert content.waiting_period == 10

0 commit comments

Comments
 (0)