Set due_dates for courses explicitly
This commit is contained in:
parent
c1f29a02a0
commit
5d29fb7a76
|
|
@ -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")
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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 = []
|
||||||
]
|
|
||||||
|
|
|
||||||
|
|
@ -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 = []
|
||||||
]
|
|
||||||
|
|
|
||||||
|
|
@ -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 = []
|
||||||
]
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue