841 lines
30 KiB
Python
841 lines
30 KiB
Python
import os
|
||
import random
|
||
from datetime import datetime, timedelta
|
||
|
||
import djclick as click
|
||
from dateutil.relativedelta import MO, relativedelta, TH, TU
|
||
from django.utils import timezone
|
||
|
||
from vbv_lernwelt.assignment.creators.create_assignments import (
|
||
create_uk_basis_prep_assignment,
|
||
create_uk_condition_acceptance,
|
||
create_uk_fahrzeug_casework,
|
||
create_uk_fahrzeug_prep_assignment,
|
||
create_uk_fr_basis_prep_assignment,
|
||
create_uk_fr_fahrzeug_casework,
|
||
create_uk_fr_fahrzeug_prep_assignment,
|
||
create_uk_fr_kickoff_prep_assignment,
|
||
create_uk_fr_reflection,
|
||
create_uk_it_basis_prep_assignment,
|
||
create_uk_it_fahrzeug_casework,
|
||
create_uk_it_fahrzeug_prep_assignment,
|
||
create_uk_it_kickoff_prep_assignment,
|
||
create_uk_it_reflection,
|
||
create_uk_kickoff_prep_assignment,
|
||
create_uk_reflection,
|
||
create_vv_einkommenssicherung_casework,
|
||
create_vv_gesundheit_casework,
|
||
create_vv_gewinnen_casework,
|
||
create_vv_reflection,
|
||
)
|
||
from vbv_lernwelt.assignment.models import Assignment, AssignmentCompletionStatus
|
||
from vbv_lernwelt.assignment.services import update_assignment_completion
|
||
from vbv_lernwelt.assignment.tests.assignment_factories import AssignmentListPageFactory
|
||
from vbv_lernwelt.competence.create_uk_competence_profile import (
|
||
create_uk_competence_profile,
|
||
create_uk_fr_competence_profile,
|
||
create_uk_it_competence_profile,
|
||
)
|
||
from vbv_lernwelt.competence.create_uk_training_competence_profile import (
|
||
create_uk_fr_training_competence_profile,
|
||
create_uk_it_training_competence_profile,
|
||
create_uk_training_competence_profile,
|
||
)
|
||
from vbv_lernwelt.competence.create_vv_new_competence_profile import (
|
||
create_vv_new_competence_profile,
|
||
)
|
||
from vbv_lernwelt.competence.models import PerformanceCriteria
|
||
from vbv_lernwelt.core.create_default_users import default_users
|
||
from vbv_lernwelt.core.models import User
|
||
from vbv_lernwelt.course.consts import (
|
||
COURSE_TEST_ID,
|
||
COURSE_UK,
|
||
COURSE_UK_FR,
|
||
COURSE_UK_IT,
|
||
COURSE_UK_TRAINING,
|
||
COURSE_UK_TRAINING_FR,
|
||
COURSE_UK_TRAINING_IT,
|
||
COURSE_VERSICHERUNGSVERMITTLERIN_FR_ID,
|
||
COURSE_VERSICHERUNGSVERMITTLERIN_ID,
|
||
COURSE_VERSICHERUNGSVERMITTLERIN_IT_ID,
|
||
)
|
||
from vbv_lernwelt.course.creators.test_course import (
|
||
create_edoniq_test_assignment,
|
||
create_test_course,
|
||
)
|
||
from vbv_lernwelt.course.creators.uk_course import (
|
||
create_competence_navi,
|
||
create_uk_fr_learning_path,
|
||
create_uk_it_learning_path,
|
||
create_uk_learning_path,
|
||
)
|
||
from vbv_lernwelt.course.creators.uk_training_course import (
|
||
create_uk_training_learning_path,
|
||
)
|
||
from vbv_lernwelt.course.creators.versicherungsvermittlerin import (
|
||
create_versicherungsvermittlerin_with_categories,
|
||
)
|
||
from vbv_lernwelt.course.models import (
|
||
Course,
|
||
CoursePage,
|
||
CourseSession,
|
||
CourseSessionUser,
|
||
)
|
||
from vbv_lernwelt.course.services import mark_course_completion
|
||
from vbv_lernwelt.course_session.models import (
|
||
CourseSessionAssignment,
|
||
CourseSessionAttendanceCourse,
|
||
)
|
||
from vbv_lernwelt.importer.services import (
|
||
import_course_sessions_from_excel,
|
||
import_students_from_excel,
|
||
import_trainers_from_excel_for_training,
|
||
)
|
||
from vbv_lernwelt.learnpath.create_vv_new_learning_path import (
|
||
create_vv_new_learning_path,
|
||
)
|
||
from vbv_lernwelt.learnpath.models import (
|
||
Circle,
|
||
LearningContent,
|
||
LearningContentAssignment,
|
||
LearningContentAttendanceCourse,
|
||
)
|
||
from vbv_lernwelt.media_files.create_default_documents import (
|
||
create_default_collections,
|
||
create_default_content_documents,
|
||
create_default_user_documents,
|
||
)
|
||
from vbv_lernwelt.media_files.create_default_images import create_default_images
|
||
from vbv_lernwelt.media_library.create_default_media_library import (
|
||
create_default_media_library,
|
||
)
|
||
|
||
ADMIN_EMAILS = ["info@iterativ.ch", "admin"]
|
||
|
||
|
||
@click.command()
|
||
@click.option(
|
||
"--course",
|
||
"-c",
|
||
multiple=True,
|
||
default=[
|
||
COURSE_TEST_ID,
|
||
COURSE_UK,
|
||
COURSE_VERSICHERUNGSVERMITTLERIN_ID,
|
||
# COURSE_VERSICHERUNGSVERMITTLERIN_FR_ID,
|
||
# COURSE_VERSICHERUNGSVERMITTLERIN_IT_ID,
|
||
# COURSE_UK_FR,
|
||
# COURSE_UK_IT,
|
||
# COURSE_UK_TRAINING,
|
||
# COURSE_UK_TRAINING_FR,
|
||
# COURSE_UK_TRAINING_IT,
|
||
],
|
||
)
|
||
def command(course):
|
||
print("Creating default courses", course)
|
||
|
||
create_default_collections()
|
||
create_default_content_documents()
|
||
create_default_user_documents()
|
||
create_default_images()
|
||
|
||
if COURSE_VERSICHERUNGSVERMITTLERIN_ID in course:
|
||
create_versicherungsvermittlerin_course()
|
||
|
||
if COURSE_VERSICHERUNGSVERMITTLERIN_FR_ID in course:
|
||
create_versicherungsvermittlerin_course(
|
||
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_FR_ID, language="fr"
|
||
)
|
||
if COURSE_VERSICHERUNGSVERMITTLERIN_IT_ID in course:
|
||
create_versicherungsvermittlerin_course(
|
||
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_IT_ID, language="it"
|
||
)
|
||
|
||
if COURSE_UK in course:
|
||
create_course_uk_de()
|
||
create_course_uk_de_course_sessions()
|
||
create_course_uk_de_completion_data(
|
||
CourseSession.objects.get(title="Demo üK 2023 DE")
|
||
)
|
||
create_course_uk_de_assignment_completion_data(
|
||
assignment=Assignment.objects.get(
|
||
slug="überbetriebliche-kurse-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice"
|
||
),
|
||
course_session=CourseSession.objects.get(title="Demo üK 2023 DE"),
|
||
user=User.objects.get(email="lina.egger@example.com"),
|
||
)
|
||
|
||
if COURSE_UK_FR in course:
|
||
create_course_uk_fr()
|
||
|
||
if COURSE_UK_IT in course:
|
||
create_course_uk_it()
|
||
|
||
if COURSE_TEST_ID in course:
|
||
create_test_course(with_sessions=True)
|
||
|
||
if COURSE_UK_TRAINING in course:
|
||
create_course_training_de()
|
||
|
||
if COURSE_UK_TRAINING_FR in course:
|
||
create_course_training_fr()
|
||
|
||
if COURSE_UK_TRAINING_IT in course:
|
||
create_course_training_it()
|
||
|
||
|
||
def create_versicherungsvermittlerin_course(
|
||
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, language="de"
|
||
):
|
||
names = {
|
||
"de": "Versicherungsvermittler/-in",
|
||
"fr": "Intermédiaire d’assurance",
|
||
"it": "Intermediario/a assicurativo/a",
|
||
}
|
||
# Versicherungsvermittler/in mit neuen Circles
|
||
course = create_versicherungsvermittlerin_with_categories(
|
||
course_id=course_id,
|
||
title=names[language],
|
||
)
|
||
|
||
# assignments create assignments parent page
|
||
_assignment_list_page = AssignmentListPageFactory(
|
||
parent=course.coursepage,
|
||
)
|
||
|
||
create_vv_new_competence_profile(course_id=course_id)
|
||
create_default_media_library(course_id=course_id)
|
||
create_vv_einkommenssicherung_casework(course_id=course_id)
|
||
create_vv_gesundheit_casework(course_id=course_id)
|
||
create_vv_gewinnen_casework(course_id=course_id)
|
||
create_vv_reflection(course_id=course_id)
|
||
create_vv_new_learning_path(course_id=course_id)
|
||
|
||
cs = CourseSession.objects.create(course_id=course_id, title=names[language])
|
||
|
||
if language == "de":
|
||
for user_data in default_users:
|
||
CourseSessionUser.objects.create(
|
||
course_session=cs,
|
||
user=User.objects.get(username=user_data["email"]),
|
||
)
|
||
|
||
csu = CourseSessionUser.objects.create(
|
||
course_session=cs,
|
||
user=User.objects.get(username="student-vv@eiger-versicherungen.ch"),
|
||
)
|
||
expert1 = CourseSessionUser.objects.create(
|
||
course_session=cs,
|
||
user=User.objects.get(username="expert-vv.expert1@eiger-versicherungen.ch"),
|
||
role=CourseSessionUser.Role.EXPERT,
|
||
)
|
||
|
||
expert2 = CourseSessionUser.objects.create(
|
||
course_session=cs,
|
||
user=User.objects.get(username="expert-vv.expert2@eiger-versicherungen.ch"),
|
||
role=CourseSessionUser.Role.EXPERT,
|
||
)
|
||
|
||
expert3 = CourseSessionUser.objects.create(
|
||
course_session=cs,
|
||
user=User.objects.get(username="expert-vv.expert3@eiger-versicherungen.ch"),
|
||
role=CourseSessionUser.Role.EXPERT,
|
||
)
|
||
|
||
experts = [expert1, expert2, expert3]
|
||
|
||
circles = Circle.objects.filter(
|
||
slug__startswith="versicherungsvermittler-in-lp"
|
||
)
|
||
|
||
# for i, circle in enumerate(circles):
|
||
# expert = experts[i % len(experts)]
|
||
# expert.expert.add(circle)
|
||
# create_feedback(circle, cs, 3)
|
||
|
||
for admin_email in ADMIN_EMAILS:
|
||
CourseSessionUser.objects.create(
|
||
course_session=cs,
|
||
user=User.objects.get(email=admin_email),
|
||
)
|
||
|
||
|
||
def create_course_uk_de(course_id=COURSE_UK, lang="de"):
|
||
names = {
|
||
"de": "Überbetriebliche Kurse",
|
||
"fr": "Cours interentreprises",
|
||
"it": "Corsi interaziendali",
|
||
}
|
||
course = create_versicherungsvermittlerin_with_categories(
|
||
course_id=course_id, title=names[lang]
|
||
)
|
||
|
||
# assignments create assignments parent page
|
||
_assignment_list_page = AssignmentListPageFactory(
|
||
parent=course.coursepage,
|
||
)
|
||
|
||
competence_certificate = create_competence_navi(course_id=COURSE_UK)
|
||
|
||
create_uk_kickoff_prep_assignment(course_id=course_id)
|
||
create_uk_condition_acceptance(course_id=course_id)
|
||
create_uk_basis_prep_assignment(course_id=course_id)
|
||
create_uk_fahrzeug_casework(
|
||
course_id=course_id, competence_certificate=competence_certificate
|
||
)
|
||
create_uk_fahrzeug_prep_assignment(course_id=course_id)
|
||
create_uk_reflection(course_id=course_id)
|
||
create_edoniq_test_assignment(
|
||
course_id=course_id,
|
||
title="Edoniq Wissens- und Verständisfragen - Circle Basis",
|
||
competence_certificate=competence_certificate,
|
||
)
|
||
|
||
# learning path
|
||
create_uk_learning_path(course_id=course_id)
|
||
create_uk_competence_profile(course_id=course_id)
|
||
create_default_media_library(course_id=course_id)
|
||
|
||
create_default_collections()
|
||
create_default_content_documents()
|
||
|
||
|
||
def create_course_uk_de_course_sessions():
|
||
course = Course.objects.get(id=COURSE_UK)
|
||
|
||
cs = CourseSession.objects.create(
|
||
course_id=COURSE_UK,
|
||
title="Demo üK 2023 DE",
|
||
)
|
||
|
||
csac = CourseSessionAttendanceCourse.objects.create(
|
||
course_session=cs,
|
||
learning_content=LearningContentAttendanceCourse.objects.get(
|
||
slug="überbetriebliche-kurse-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,
|
||
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()
|
||
|
||
csa = CourseSessionAssignment.objects.create(
|
||
course_session=cs,
|
||
learning_content=LearningContentAssignment.objects.get(
|
||
slug=f"{course.slug}-lp-circle-fahrzeug-lc-fahrzeug-mein-erstes-auto"
|
||
),
|
||
)
|
||
next_monday = datetime.now() + relativedelta(weekday=MO(2))
|
||
csa.submission_deadline.start = timezone.make_aware(
|
||
(next_monday + relativedelta(weeks=1)).replace(
|
||
hour=23, minute=59, second=59, microsecond=0
|
||
)
|
||
)
|
||
csa.submission_deadline.save()
|
||
|
||
# figma demo users and data
|
||
csu = CourseSessionUser.objects.create(
|
||
course_session=cs,
|
||
user=User.objects.get(username="patrizia.huggel@eiger-versicherungen.ch"),
|
||
role=CourseSessionUser.Role.EXPERT,
|
||
)
|
||
csu.expert.add(Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-kickoff"))
|
||
csu.expert.add(
|
||
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-haushalt-teil-1")
|
||
)
|
||
csu.expert.add(Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-fahrzeug"))
|
||
csu = CourseSessionUser.objects.create(
|
||
course_session=cs,
|
||
user=User.objects.get(username="andreas.feuz@eiger-versicherungen.ch"),
|
||
role=CourseSessionUser.Role.EXPERT,
|
||
)
|
||
csu.expert.add(
|
||
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-haushalt-teil-2")
|
||
)
|
||
csu.expert.add(Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-basis"))
|
||
_csu = CourseSessionUser.objects.create(
|
||
course_session=cs,
|
||
user=User.objects.get(username="michael.meier@example.com"),
|
||
)
|
||
_csu = CourseSessionUser.objects.create(
|
||
course_session=cs,
|
||
user=User.objects.get(username="lina.egger@example.com"),
|
||
)
|
||
_csu = CourseSessionUser.objects.create(
|
||
course_session=cs,
|
||
user=User.objects.get(username="evelyn.schmid@example.com"),
|
||
)
|
||
|
||
_csu = CourseSessionUser.objects.create(
|
||
course_session=cs,
|
||
user=User.objects.get(username="christoph.bosshard@vbv-afa.ch"),
|
||
)
|
||
|
||
_csu = CourseSessionUser.objects.create(
|
||
course_session=cs,
|
||
user=User.objects.get(username="axel.manderbach@lernetz.ch"),
|
||
)
|
||
|
||
_csu = CourseSessionUser.objects.create(
|
||
course_session=cs,
|
||
user=User.objects.get(username="patrick.muster@eiger-versicherungen.ch"),
|
||
)
|
||
|
||
# TODO: feedback must now contain a `feedback_user`
|
||
# create_feedback(
|
||
# Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-kickoff"),
|
||
# cs,
|
||
# 3,
|
||
# )
|
||
# create_feedback(
|
||
# Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-haushalt-teil-2"),
|
||
# cs,
|
||
# 14,
|
||
# )
|
||
# create_feedback(
|
||
# Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-basis"), cs, 4
|
||
# )
|
||
|
||
|
||
def create_course_uk_fr():
|
||
# Überbetriebliche Kurse FR
|
||
course = create_versicherungsvermittlerin_with_categories(
|
||
course_id=COURSE_UK_FR, title="Cours interentreprises"
|
||
)
|
||
|
||
# assignments create assignments parent page
|
||
_assignment_list_page = AssignmentListPageFactory(
|
||
parent=course.coursepage,
|
||
)
|
||
|
||
create_uk_condition_acceptance(course_id=COURSE_UK_FR)
|
||
create_uk_fr_kickoff_prep_assignment(course_id=COURSE_UK_FR)
|
||
create_uk_fr_basis_prep_assignment(course_id=COURSE_UK_FR)
|
||
create_uk_fr_fahrzeug_casework(course_id=COURSE_UK_FR)
|
||
create_uk_fr_fahrzeug_prep_assignment(course_id=COURSE_UK_FR)
|
||
create_uk_fr_reflection(course_id=COURSE_UK_FR)
|
||
create_uk_fr_learning_path(course_id=COURSE_UK_FR)
|
||
create_uk_fr_competence_profile(course_id=COURSE_UK_FR)
|
||
create_default_media_library(course_id=COURSE_UK_FR)
|
||
|
||
cs = CourseSession.objects.create(
|
||
course_id=COURSE_UK_FR,
|
||
title="Demo ci 2023 FR",
|
||
)
|
||
|
||
csu = CourseSessionUser.objects.create(
|
||
course_session=cs,
|
||
user=User.objects.get(username="geraldine.kolly@assurance.ch"),
|
||
role=CourseSessionUser.Role.EXPERT,
|
||
)
|
||
csu.expert.add(
|
||
Circle.objects.get(slug="cours-interentreprises-lp-circle-lancement")
|
||
)
|
||
_csu = CourseSessionUser.objects.create(
|
||
course_session=cs,
|
||
user=User.objects.get(username="luca.dupont@assurance.ch"),
|
||
)
|
||
csu = CourseSessionUser.objects.create(
|
||
course_session=cs,
|
||
user=User.objects.get(username="andreas.feuz@eiger-versicherungen.ch"),
|
||
role=CourseSessionUser.Role.EXPERT,
|
||
)
|
||
|
||
for fr_circle in Circle.objects.filter(
|
||
slug__startswith="cours-interentreprises-lp"
|
||
):
|
||
csu.expert.add(fr_circle)
|
||
|
||
|
||
def create_course_uk_it():
|
||
# Überbetriebliche Kurse FR
|
||
course = create_versicherungsvermittlerin_with_categories(
|
||
course_id=COURSE_UK_IT, title="Corso interaziendale"
|
||
)
|
||
|
||
# assignments create assignments parent page
|
||
_assignment_list_page = AssignmentListPageFactory(
|
||
parent=course.coursepage,
|
||
)
|
||
create_uk_condition_acceptance(course_id=COURSE_UK_IT)
|
||
create_uk_it_kickoff_prep_assignment(course_id=COURSE_UK_IT)
|
||
create_uk_it_basis_prep_assignment(course_id=COURSE_UK_IT)
|
||
create_uk_it_fahrzeug_casework(course_id=COURSE_UK_IT)
|
||
create_uk_it_fahrzeug_prep_assignment(course_id=COURSE_UK_IT)
|
||
create_uk_it_reflection(course_id=COURSE_UK_IT)
|
||
create_uk_it_learning_path(course_id=COURSE_UK_IT)
|
||
create_uk_it_competence_profile(course_id=COURSE_UK_IT)
|
||
create_default_media_library(course_id=COURSE_UK_IT)
|
||
|
||
_cs = CourseSession.objects.create(
|
||
course_id=COURSE_UK_IT,
|
||
title="Demo ci 2023 IT",
|
||
)
|
||
|
||
|
||
def create_course_uk_de_assignment_completion_data(assignment, course_session, user):
|
||
subtasks = assignment.filter_user_subtasks(subtask_types=["user_text_input"])
|
||
for index, subtask in enumerate(subtasks):
|
||
user_text = f"Lorem ipsum dolor sit amet... {index}"
|
||
|
||
update_assignment_completion(
|
||
assignment_user=user,
|
||
assignment=assignment,
|
||
learning_content_page=assignment.learningcontentassignment_set.first(),
|
||
course_session=course_session,
|
||
completion_data={
|
||
subtask["id"]: {
|
||
"user_data": {"text": user_text},
|
||
}
|
||
},
|
||
)
|
||
update_assignment_completion(
|
||
assignment_user=user,
|
||
assignment=assignment,
|
||
learning_content_page=assignment.learningcontentassignment_set.first(),
|
||
course_session=course_session,
|
||
completion_status=AssignmentCompletionStatus.SUBMITTED,
|
||
)
|
||
|
||
|
||
def create_course_uk_de_completion_data(course_session):
|
||
circles = Circle.objects.filter(slug__startswith="überbetriebliche-kurse-lp-circle")
|
||
for circle in circles:
|
||
for index, lc in enumerate(circle.get_descendants().type(LearningContent)):
|
||
mark_course_completion(
|
||
page=lc,
|
||
user=User.objects.get(email="lina.egger@example.com"),
|
||
course_session=course_session,
|
||
completion_status="SUCCESS",
|
||
)
|
||
|
||
random_number = random.randint(1, 3)
|
||
if index % random_number == 0:
|
||
mark_course_completion(
|
||
page=lc,
|
||
user=User.objects.get(email="michael.meier@example.com"),
|
||
course_session=course_session,
|
||
completion_status="SUCCESS",
|
||
)
|
||
|
||
performance_criteria = (
|
||
CoursePage.objects.get(course_id=COURSE_UK)
|
||
.get_descendants()
|
||
.type(PerformanceCriteria)
|
||
)
|
||
for index, pc in enumerate(performance_criteria):
|
||
mark_course_completion(
|
||
page=pc,
|
||
user=User.objects.get(email="lina.egger@example.com"),
|
||
course_session=course_session,
|
||
completion_status="SUCCESS",
|
||
)
|
||
|
||
random_number = random.randint(1, 4)
|
||
if index % random_number == 0:
|
||
mark_course_completion(
|
||
page=pc,
|
||
user=User.objects.get(email="michael.meier@example.com"),
|
||
course_session=course_session,
|
||
completion_status="SUCCESS",
|
||
)
|
||
if index % random_number == 1:
|
||
mark_course_completion(
|
||
page=pc,
|
||
user=User.objects.get(email="michael.meier@example.com"),
|
||
course_session=course_session,
|
||
completion_status="FAIL",
|
||
)
|
||
|
||
|
||
def create_course_training_de():
|
||
# Test Lehrgang für üK Trainer
|
||
course = create_versicherungsvermittlerin_with_categories(
|
||
course_id=COURSE_UK_TRAINING, title="myVBV Training"
|
||
)
|
||
|
||
# assignments create assignments parent page
|
||
_assignment_list_page = AssignmentListPageFactory(
|
||
parent=course.coursepage,
|
||
)
|
||
create_uk_fahrzeug_casework(course_id=COURSE_UK_TRAINING)
|
||
create_uk_fahrzeug_prep_assignment(course_id=COURSE_UK_TRAINING)
|
||
create_uk_reflection(course_id=COURSE_UK_TRAINING)
|
||
|
||
create_uk_training_learning_path(course_id=COURSE_UK_TRAINING)
|
||
create_uk_training_competence_profile(course_id=COURSE_UK_TRAINING)
|
||
create_default_media_library(course_id=COURSE_UK_TRAINING)
|
||
|
||
current_dir = os.path.dirname(os.path.realpath(__file__))
|
||
print(current_dir)
|
||
course = Course.objects.get(id=COURSE_UK_TRAINING)
|
||
import_course_sessions_from_excel(
|
||
f"{current_dir}/../../../importer/tests/Schulungen_Durchfuehrung_Trainer.xlsx",
|
||
course=course,
|
||
restrict_language="de",
|
||
)
|
||
import_trainers_from_excel_for_training(
|
||
f"{current_dir}/../../../importer/tests/Schulungen_Durchfuehrung_Trainer.xlsx",
|
||
course=course,
|
||
)
|
||
import_students_from_excel(
|
||
f"{current_dir}/../../../importer/tests/Schulungen_Teilnehmende.xlsx",
|
||
)
|
||
|
||
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,
|
||
)
|
||
|
||
# attach users as trainers to ÜK course
|
||
course_uk = Course.objects.filter(id=COURSE_UK).first()
|
||
if course_uk:
|
||
users = [
|
||
csu.user
|
||
for csu in CourseSessionUser.objects.filter(
|
||
course_session__course_id=COURSE_UK_TRAINING
|
||
)
|
||
]
|
||
|
||
cs = CourseSession.objects.get(course_id=COURSE_UK, title="Demo üK 2023 DE")
|
||
|
||
for user in users:
|
||
csu, _created = CourseSessionUser.objects.get_or_create(
|
||
course_session_id=cs.id, user_id=user.id
|
||
)
|
||
csu.role = CourseSessionUser.Role.EXPERT
|
||
csu.expert.add(
|
||
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-kickoff")
|
||
)
|
||
csu.expert.add(
|
||
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-basis")
|
||
)
|
||
csu.expert.add(
|
||
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-fahrzeug")
|
||
)
|
||
|
||
csu.save()
|
||
|
||
|
||
def create_course_session_assignments(course_session, assignment_slug, i=1):
|
||
csa = CourseSessionAssignment.objects.create(
|
||
course_session=course_session,
|
||
learning_content=LearningContentAssignment.objects.get(slug=assignment_slug),
|
||
)
|
||
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)
|
||
submission_deadline.save()
|
||
evaluation_deadline = csa.evaluation_deadline
|
||
if evaluation_deadline:
|
||
evaluation_deadline.start = course_session.start_date + timedelta(days=28)
|
||
evaluation_deadline.save()
|
||
|
||
|
||
def create_course_training_fr():
|
||
# Test Lehrgang für üK Trainer FR
|
||
course = create_versicherungsvermittlerin_with_categories(
|
||
course_id=COURSE_UK_TRAINING_FR, title="myVBV Training (FR)"
|
||
)
|
||
|
||
# assignments create assignments parent page
|
||
_assignment_list_page = AssignmentListPageFactory(
|
||
parent=course.coursepage,
|
||
)
|
||
create_uk_fr_fahrzeug_casework(course_id=COURSE_UK_TRAINING_FR)
|
||
create_uk_fr_fahrzeug_prep_assignment(course_id=COURSE_UK_TRAINING_FR)
|
||
create_uk_fr_reflection(course_id=COURSE_UK_TRAINING_FR)
|
||
|
||
create_uk_training_learning_path(course_id=COURSE_UK_TRAINING_FR)
|
||
create_uk_fr_training_competence_profile(course_id=COURSE_UK_TRAINING_FR)
|
||
create_default_media_library(course_id=COURSE_UK_TRAINING_FR)
|
||
|
||
current_dir = os.path.dirname(os.path.realpath(__file__))
|
||
print(current_dir)
|
||
course = Course.objects.get(id=COURSE_UK_TRAINING_FR)
|
||
import_course_sessions_from_excel(
|
||
f"{current_dir}/../../../importer/tests/Schulungen_Durchfuehrung_Trainer.xlsx",
|
||
restrict_language="fr",
|
||
course=course,
|
||
)
|
||
import_trainers_from_excel_for_training(
|
||
f"{current_dir}/../../../importer/tests/Schulungen_Durchfuehrung_Trainer.xlsx",
|
||
course=course,
|
||
language="fr",
|
||
)
|
||
import_students_from_excel(
|
||
f"{current_dir}/../../../importer/tests/Schulungen_Teilnehmende.xlsx",
|
||
)
|
||
|
||
for cs in CourseSession.objects.filter(course_id=COURSE_UK_TRAINING_FR):
|
||
# cs.assignment_details_list = [
|
||
# {
|
||
# "learningContentId": LearningContentAssignment.objects.get(
|
||
# slug=f"{course.slug}-lp-circle-véhicule-lc-vérification-dune-police-dassurance-de-véhicule-à-moteur"
|
||
# ).id,
|
||
# "submissionDeadlineDateTimeUtc": "2023-06-13T19:00:00Z",
|
||
# "evaluationDeadlineDateTimeUtc": "2023-06-27T19:00:00Z",
|
||
# },
|
||
# {
|
||
# "learningContentId": LearningContentAssignment.objects.get(
|
||
# slug=f"{course.slug}-lp-circle-véhicule-lc-véhicule-à-moteur-ma-première-voiture"
|
||
# ).id,
|
||
# "submissionDeadlineDateTimeUtc": "2023-06-13T19:00:00Z",
|
||
# "evaluationDeadlineDateTimeUtc": "2023-06-27T19:00:00Z",
|
||
# },
|
||
# ]
|
||
cs.save()
|
||
|
||
# attach users as trainers to ÜK course
|
||
course_uk = Course.objects.filter(id=COURSE_UK_FR).first()
|
||
if course_uk:
|
||
users = [
|
||
csu.user
|
||
for csu in CourseSessionUser.objects.filter(
|
||
course_session__course_id=COURSE_UK_TRAINING_FR
|
||
)
|
||
]
|
||
|
||
cs = CourseSession.objects.get(
|
||
course_id=COURSE_UK_FR,
|
||
title="Demo ci 2023 FR",
|
||
)
|
||
|
||
for user in users:
|
||
csu, _created = CourseSessionUser.objects.get_or_create(
|
||
course_session_id=cs.id, user_id=user.id
|
||
)
|
||
csu.role = CourseSessionUser.Role.EXPERT
|
||
csu.expert.add(
|
||
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-kickoff")
|
||
)
|
||
csu.expert.add(
|
||
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-basis")
|
||
)
|
||
csu.expert.add(
|
||
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-fahrzeug")
|
||
)
|
||
|
||
csu.save()
|
||
|
||
|
||
def create_course_training_it():
|
||
# Test Lehrgang für üK Trainer FR
|
||
course = create_versicherungsvermittlerin_with_categories(
|
||
course_id=COURSE_UK_TRAINING_IT, title="myVBV Training (IT)"
|
||
)
|
||
|
||
# assignments create assignments parent page
|
||
_assignment_list_page = AssignmentListPageFactory(
|
||
parent=course.coursepage,
|
||
)
|
||
create_uk_it_fahrzeug_casework(course_id=COURSE_UK_TRAINING_IT)
|
||
create_uk_it_fahrzeug_prep_assignment(course_id=COURSE_UK_TRAINING_IT)
|
||
create_uk_it_reflection(course_id=COURSE_UK_TRAINING_IT)
|
||
|
||
create_uk_training_learning_path(course_id=COURSE_UK_TRAINING_IT)
|
||
create_uk_it_training_competence_profile(course_id=COURSE_UK_TRAINING_IT)
|
||
create_default_media_library(course_id=COURSE_UK_TRAINING_IT)
|
||
|
||
current_dir = os.path.dirname(os.path.realpath(__file__))
|
||
print(current_dir)
|
||
course = Course.objects.get(id=COURSE_UK_TRAINING_IT)
|
||
import_course_sessions_from_excel(
|
||
f"{current_dir}/../../../importer/tests/Schulungen_Durchfuehrung_Trainer.xlsx",
|
||
restrict_language="it",
|
||
course=course,
|
||
)
|
||
import_trainers_from_excel_for_training(
|
||
f"{current_dir}/../../../importer/tests/Schulungen_Durchfuehrung_Trainer.xlsx",
|
||
course=course,
|
||
language="it",
|
||
)
|
||
import_students_from_excel(
|
||
f"{current_dir}/../../../importer/tests/Schulungen_Teilnehmende.xlsx",
|
||
)
|
||
|
||
for cs in CourseSession.objects.filter(course_id=COURSE_UK_TRAINING_IT):
|
||
# cs.assignment_details_list = [
|
||
# {
|
||
# "learningContentId": LearningContentAssignment.objects.get(
|
||
# slug=f"{course.slug}-lp-circle-veicolo-lc-verifica-di-una-polizza-di-assicurazione-veicoli-a-motore"
|
||
# ).id,
|
||
# "submissionDeadlineDateTimeUtc": "2023-06-20T19:00:00Z",
|
||
# "evaluationDeadlineDateTimeUtc": "2023-06-27T19:00:00Z",
|
||
# },
|
||
# {
|
||
# "learningContentId": LearningContentAssignment.objects.get(
|
||
# slug=f"{course.slug}-lp-circle-veicolo-lc-veicolo-la-mia-prima-auto"
|
||
# ).id,
|
||
# "submissionDeadlineDateTimeUtc": "2023-06-20T19:00:00Z",
|
||
# "evaluationDeadlineDateTimeUtc": "2023-06-27T19:00:00Z",
|
||
# },
|
||
# ]
|
||
cs.save()
|
||
|
||
# attach users as trainers to ÜK course
|
||
course_uk = Course.objects.filter(id=COURSE_UK_IT).first()
|
||
if course_uk:
|
||
users = [
|
||
csu.user
|
||
for csu in CourseSessionUser.objects.filter(
|
||
course_session__course_id=COURSE_UK_TRAINING_IT
|
||
)
|
||
]
|
||
|
||
cs = CourseSession.objects.get(
|
||
course_id=COURSE_UK_IT,
|
||
title="Demo ci 2023 IT",
|
||
)
|
||
|
||
for user in users:
|
||
csu, _created = CourseSessionUser.objects.get_or_create(
|
||
course_session_id=cs.id, user_id=user.id
|
||
)
|
||
csu.role = CourseSessionUser.Role.EXPERT
|
||
csu.expert.add(
|
||
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-kickoff")
|
||
)
|
||
csu.expert.add(
|
||
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-basis")
|
||
)
|
||
csu.expert.add(
|
||
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-fahrzeug")
|
||
)
|
||
|
||
csu.save()
|