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 random
from datetime import datetime, timedelta
from datetime import datetime
import wagtail_factories
from dateutil.relativedelta import relativedelta, TH, TU
from django.conf import settings
from django.utils import timezone
from slugify import slugify
@ -41,7 +41,6 @@ from vbv_lernwelt.course_session.models import (
CourseSessionAssignment,
CourseSessionAttendanceCourse,
)
from vbv_lernwelt.duedate.models import DueDate
from vbv_lernwelt.learnpath.models import (
Circle,
LearningContentAssignment,
@ -99,30 +98,44 @@ def create_test_course(include_uk=True, include_vv=True, with_sessions=False):
id=TEST_COURSE_SESSION_BERN_ID,
start_date=now,
)
CourseSessionAttendanceCourse.objects.create(
csac = CourseSessionAttendanceCourse.objects.create(
course_session=cs_bern,
learning_content=LearningContentAttendanceCourse.objects.get(
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",
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(
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,
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
@ -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):
if apps is not None:
Course = apps.get_model("course", "Course")

View File

@ -3,6 +3,7 @@ import random
from datetime import datetime, timedelta
import djclick as click
from dateutil.relativedelta import relativedelta, TH, TU
from django.utils import timezone
from vbv_lernwelt.assignment.creators.create_assignments import (
@ -245,13 +246,6 @@ def create_course_uk_de():
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(
course_session=cs,
learning_content=LearningContentAttendanceCourse.objects.get(
@ -260,17 +254,37 @@ def create_course_uk_de():
location="Handelsschule KV Bern, Zimmer 123, Eigerstrasse 16, 3012 Bern",
trainer="Roland Grossenbacher, roland.grossenbacher@helvetia.ch",
)
# TODO: create dates schlauer
random_week = random.randint(1, 26)
tuesday_in_two_weeks = (
datetime.now() + relativedelta(weekday=TU(2)) + relativedelta(weeks=2)
)
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(
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()
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
csu = CourseSessionUser.objects.create(
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:
course_session.start_date = datetime.now() + timedelta(days=i * 12)
course_session.save()
submission_deadline = csa.submission_deadline
if submission_deadline:
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):
dependencies = [
('course', '0006_auto_20230626_1724'),
('course', '0006_remove_coursesession_assignment_details_list'),
("course", "0006_auto_20230626_1724"),
("course", "0006_remove_coursesession_assignment_details_list"),
]
operations = [
]
operations = []

View File

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

View File

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