Set due_dates for courses explicitly

This commit is contained in:
Daniel Egger 2023-07-12 11:45:02 +02:00
parent c1f29a02a0
commit 5d29fb7a76
5 changed files with 69 additions and 95 deletions

View File

@ -1,8 +1,8 @@
import json import json
import random from datetime import datetime
from datetime import datetime, timedelta
import wagtail_factories import wagtail_factories
from dateutil.relativedelta import relativedelta, TH, TU
from django.conf import settings from django.conf import settings
from django.utils import timezone from django.utils import timezone
from slugify import slugify from slugify import slugify
@ -41,7 +41,6 @@ from vbv_lernwelt.course_session.models import (
CourseSessionAssignment, CourseSessionAssignment,
CourseSessionAttendanceCourse, CourseSessionAttendanceCourse,
) )
from vbv_lernwelt.duedate.models import DueDate
from vbv_lernwelt.learnpath.models import ( from vbv_lernwelt.learnpath.models import (
Circle, Circle,
LearningContentAssignment, LearningContentAssignment,
@ -99,30 +98,44 @@ def create_test_course(include_uk=True, include_vv=True, with_sessions=False):
id=TEST_COURSE_SESSION_BERN_ID, id=TEST_COURSE_SESSION_BERN_ID,
start_date=now, start_date=now,
) )
CourseSessionAttendanceCourse.objects.create( csac = CourseSessionAttendanceCourse.objects.create(
course_session=cs_bern, course_session=cs_bern,
learning_content=LearningContentAttendanceCourse.objects.get( learning_content=LearningContentAttendanceCourse.objects.get(
slug="test-lehrgang-lp-circle-fahrzeug-lc-präsenzkurs-fahrzeug" slug="test-lehrgang-lp-circle-fahrzeug-lc-präsenzkurs-fahrzeug"
), ),
due_date=DueDate.objects.create(
course_session=cs_bern,
start=timezone.make_aware(
(datetime.now() + timedelta(days=15)).replace(
hour=10, minute=30, second=0, microsecond=0
)
),
end=timezone.make_aware(
(datetime.now() + timedelta(days=15)).replace(
hour=17, minute=30, second=0, microsecond=0
)
),
page=LearningContentAttendanceCourse.objects.get(
slug="test-lehrgang-lp-circle-fahrzeug-lc-präsenzkurs-fahrzeug"
),
),
location="Handelsschule KV Bern, Zimmer 123, Eigerstrasse 16, 3012 Bern", location="Handelsschule KV Bern, Zimmer 123, Eigerstrasse 16, 3012 Bern",
trainer="Roland Grossenbacher, roland.grossenbacher@helvetia.ch", trainer="Roland Grossenbacher, roland.grossenbacher@helvetia.ch",
) )
tuesday_in_two_weeks = (
datetime.now() + relativedelta(weekday=TU(2)) + relativedelta(weeks=2)
)
csac.due_date.start = timezone.make_aware(
tuesday_in_two_weeks.replace(hour=8, minute=30, second=0, microsecond=0)
)
csac.due_date.end = timezone.make_aware(
tuesday_in_two_weeks.replace(hour=17, minute=0, second=0, microsecond=0)
)
csac.due_date.save()
csa = CourseSessionAssignment.objects.create(
course_session=cs_bern,
learning_content=LearningContentAssignment.objects.get(
slug=f"{course.slug}-lp-circle-fahrzeug-lc-überprüfen-einer-motorfahrzeug-versicherungspolice"
),
)
next_thursday = datetime.now() + relativedelta(weekday=TH(2))
csa.submission_deadline.start = timezone.make_aware(
(next_thursday + relativedelta(weeks=3)).replace(
hour=23, minute=59, second=59, microsecond=0
)
)
csa.submission_deadline.save()
csa.evaluation_deadline.start = timezone.make_aware(
(next_thursday + relativedelta(weeks=5)).replace(
hour=23, minute=59, second=59, microsecond=0
)
)
csa.evaluation_deadline.save()
cs_zurich = CourseSession.objects.create( cs_zurich = CourseSession.objects.create(
course_id=COURSE_TEST_ID, course_id=COURSE_TEST_ID,
@ -155,18 +168,6 @@ def create_test_course(include_uk=True, include_vv=True, with_sessions=False):
course_session=cs_zurich, course_session=cs_zurich,
user=student2, user=student2,
) )
course = Course.objects.get(id=COURSE_TEST_ID)
for cs in CourseSession.objects.filter(course_id=COURSE_TEST_ID):
for assignment in LearningContentAssignment.objects.descendant_of(
course.coursepage
):
create_course_session_assignment(cs, assignment)
for (
attendance_course
) in LearningContentAttendanceCourse.objects.descendant_of(
course.coursepage
):
create_course_session_attendance_course(cs, attendance_course)
return course return course
@ -195,45 +196,6 @@ def create_test_assignment_submitted_data(assignment, course_session, user):
) )
def create_course_session_assignment(course_session, assignment):
csa, created = CourseSessionAssignment.objects.get_or_create(
course_session=course_session,
learning_content=assignment,
)
if course_session.start_date is None:
course_session.start_date = datetime.now() + timedelta(days=12)
course_session.save()
submission_deadline = csa.submission_deadline
if submission_deadline:
submission_deadline.start = course_session.start_date + timedelta(days=14)
submission_deadline.save()
evaluation_deadline = csa.evaluation_deadline
if evaluation_deadline:
evaluation_deadline.start = course_session.start_date + timedelta(days=28)
evaluation_deadline.save()
return csa
def create_course_session_attendance_course(course_session, course):
casc = CourseSessionAttendanceCourse.objects.create(
course_session=course_session,
learning_content=course,
location="Handelsschule KV Bern, Zimmer 123, Eigerstrasse 16, 3012 Bern",
trainer="Roland Grossenbacher, roland.grossenbacher@helvetia.ch",
)
random_week = random.randint(1, 26)
casc.due_date.start = timezone.make_aware(
datetime(2023, 6, 14, 8, 30) + timedelta(weeks=random_week)
)
casc.due_date.end = timezone.make_aware(
datetime(2023, 6, 14, 17, 0) + timedelta(weeks=random_week)
)
casc.due_date.save()
return casc
def create_test_course_with_categories(apps=None, schema_editor=None): def create_test_course_with_categories(apps=None, schema_editor=None):
if apps is not None: if apps is not None:
Course = apps.get_model("course", "Course") Course = apps.get_model("course", "Course")

View File

@ -3,6 +3,7 @@ import random
from datetime import datetime, timedelta from datetime import datetime, timedelta
import djclick as click import djclick as click
from dateutil.relativedelta import relativedelta, TH, TU
from django.utils import timezone from django.utils import timezone
from vbv_lernwelt.assignment.creators.create_assignments import ( from vbv_lernwelt.assignment.creators.create_assignments import (
@ -245,13 +246,6 @@ def create_course_uk_de():
title="Bern 2023 a", title="Bern 2023 a",
) )
for i, cs in enumerate(CourseSession.objects.filter(course_id=COURSE_UK_TRAINING)):
create_course_session_assignments(
cs,
f"{course.slug}-lp-circle-fahrzeug-lc-überprüfen-einer-motorfahrzeug-versicherungspolice",
i=i,
)
csac = CourseSessionAttendanceCourse.objects.create( csac = CourseSessionAttendanceCourse.objects.create(
course_session=cs, course_session=cs,
learning_content=LearningContentAttendanceCourse.objects.get( learning_content=LearningContentAttendanceCourse.objects.get(
@ -260,17 +254,37 @@ def create_course_uk_de():
location="Handelsschule KV Bern, Zimmer 123, Eigerstrasse 16, 3012 Bern", location="Handelsschule KV Bern, Zimmer 123, Eigerstrasse 16, 3012 Bern",
trainer="Roland Grossenbacher, roland.grossenbacher@helvetia.ch", trainer="Roland Grossenbacher, roland.grossenbacher@helvetia.ch",
) )
tuesday_in_two_weeks = (
# TODO: create dates schlauer datetime.now() + relativedelta(weekday=TU(2)) + relativedelta(weeks=2)
random_week = random.randint(1, 26) )
csac.due_date.start = timezone.make_aware( csac.due_date.start = timezone.make_aware(
datetime(2023, 6, 14, 8, 30) + timedelta(weeks=random_week) tuesday_in_two_weeks.replace(hour=8, minute=30, second=0, microsecond=0)
) )
csac.due_date.end = timezone.make_aware( csac.due_date.end = timezone.make_aware(
datetime(2023, 6, 14, 17, 0) + timedelta(weeks=random_week) tuesday_in_two_weeks.replace(hour=17, minute=0, second=0, microsecond=0)
) )
csac.due_date.save() csac.due_date.save()
csa = CourseSessionAssignment.objects.create(
course_session=cs,
learning_content=LearningContentAssignment.objects.get(
slug=f"{course.slug}-lp-circle-fahrzeug-lc-überprüfen-einer-motorfahrzeug-versicherungspolice"
),
)
next_thursday = datetime.now() + relativedelta(weekday=TH(2))
csa.submission_deadline.start = timezone.make_aware(
(next_thursday + relativedelta(weeks=3)).replace(
hour=23, minute=59, second=59, microsecond=0
)
)
csa.submission_deadline.save()
csa.evaluation_deadline.start = timezone.make_aware(
(next_thursday + relativedelta(weeks=5)).replace(
hour=23, minute=59, second=59, microsecond=0
)
)
csa.evaluation_deadline.save()
# figma demo users and data # figma demo users and data
csu = CourseSessionUser.objects.create( csu = CourseSessionUser.objects.create(
course_session=cs, course_session=cs,
@ -587,6 +601,7 @@ def create_course_session_assignments(course_session, assignment_slug, i=1):
if course_session.start_date is None: if course_session.start_date is None:
course_session.start_date = datetime.now() + timedelta(days=i * 12) course_session.start_date = datetime.now() + timedelta(days=i * 12)
course_session.save() course_session.save()
submission_deadline = csa.submission_deadline submission_deadline = csa.submission_deadline
if submission_deadline: if submission_deadline:
submission_deadline.start = course_session.start_date + timedelta(days=14) submission_deadline.start = course_session.start_date + timedelta(days=14)

View File

@ -6,9 +6,8 @@ from django.db import migrations
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('course', '0006_auto_20230626_1724'), ("course", "0006_auto_20230626_1724"),
('course', '0006_remove_coursesession_assignment_details_list'), ("course", "0006_remove_coursesession_assignment_details_list"),
] ]
operations = [ operations = []
]

View File

@ -6,9 +6,8 @@ from django.db import migrations
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('course_session', '0002_coursesessionattendancecourse_attendance_user_list'), ("course_session", "0002_coursesessionattendancecourse_attendance_user_list"),
('course_session', '0003_auto_20230628_1321'), ("course_session", "0003_auto_20230628_1321"),
] ]
operations = [ operations = []
]

View File

@ -6,9 +6,8 @@ from django.db import migrations
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('learnpath', '0008_alter_learningcontentassignment_content_assignment'), ("learnpath", "0008_alter_learningcontentassignment_content_assignment"),
('learnpath', '0009_alter_learningcontentassignment_content_assignment'), ("learnpath", "0009_alter_learningcontentassignment_content_assignment"),
] ]
operations = [ operations = []
]