vbv/server/vbv_lernwelt/course/management/commands/create_default_courses.py

1106 lines
36 KiB
Python

import djclick as click
from wagtail.models import Page
from vbv_lernwelt.assignment.creators.create_assignments import create_uk_assignments
from vbv_lernwelt.assignment.models import Assignment
from vbv_lernwelt.assignment.services import update_assignment_completion
from vbv_lernwelt.competence.create_uk_competence_profile import (
create_uk_competence_profile,
create_uk_fr_competence_profile,
)
from vbv_lernwelt.competence.create_vv_new_competence_profile import (
create_vv_new_competence_profile,
)
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_VERSICHERUNGSVERMITTLERIN_ID,
)
from vbv_lernwelt.course.creators.test_course import create_test_course
from vbv_lernwelt.course.creators.versicherungsvermittlerin import (
create_versicherungsvermittlerin_with_categories,
)
from vbv_lernwelt.course.management.commands.create_uk_course import (
create_uk_fr_learning_path,
create_uk_learning_path,
)
from vbv_lernwelt.course.models import CourseSession, CourseSessionUser
from vbv_lernwelt.course.services import mark_course_completion
from vbv_lernwelt.feedback.creators.create_demo_feedback import create_feedback
from vbv_lernwelt.learnpath.create_vv_new_learning_path import (
create_vv_new_learning_path,
)
from vbv_lernwelt.learnpath.models import (
Circle,
LearningContentAssignment,
LearningContentAttendanceDay,
)
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_UK_FR,
],
)
def command(course):
print("Creating default courses", course)
if COURSE_VERSICHERUNGSVERMITTLERIN_ID in course:
create_versicherungsvermittlerin_course()
if COURSE_UK in course:
create_course_uk_de()
create_course_uk_de_completion_data(
CourseSession.objects.get(title="Bern 2023 a")
)
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="Bern 2023 a"),
user=User.objects.get(email="lina.egger@example.com"),
)
if COURSE_UK_FR in course:
create_course_uk_fr()
if COURSE_TEST_ID in course:
create_test_course(with_sessions=True)
def create_versicherungsvermittlerin_course():
# Versicherungsvermittler/in mit neuen Circles
create_versicherungsvermittlerin_with_categories(
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID,
title="Versicherungsvermittler/-in",
)
create_vv_new_competence_profile(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID)
create_default_media_library(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID)
create_vv_new_learning_path()
cs = CourseSession.objects.create(
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID,
title="Versicherungsvermittler/-in",
)
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():
# Überbetriebliche Kurse DE
create_versicherungsvermittlerin_with_categories(
course_id=COURSE_UK, title="Überbetriebliche Kurse"
)
create_uk_assignments(course_id=COURSE_UK)
create_uk_learning_path(course_id=COURSE_UK)
create_uk_competence_profile(course_id=COURSE_UK)
create_default_media_library(course_id=COURSE_UK)
cs = CourseSession.objects.create(
course_id=COURSE_UK,
title="Bern 2023 a",
attendance_days=[
{
"learningContentId": LearningContentAttendanceDay.objects.get(
slug="überbetriebliche-kurse-lp-circle-fahrzeug-lc-präsenztag-fahrzeug"
).id,
"date": "2023-09-18",
"startTime": "08:15",
"endTime": "17:00",
"location": "Handelsschule KV Bern, Zimmer 123, Eigerstrasse 16, 3012 Bern",
"trainer": "Roland Grossenbacher, roland.grossenbacher@helvetia.ch",
}
],
assignment_details_list=[
{
"learningContentId": LearningContentAssignment.objects.get(
slug="überbetriebliche-kurse-lp-circle-fahrzeug-lc-überprüfen-einer-motorfahrzeug-versicherungspolice"
).id,
"submissionDeadlineDateTimeUtc": "2023-06-13T19:00:00Z",
"evaluationDeadlineDateTimeUtc": "2023-06-27T19:00:00Z",
}
],
)
# 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"),
)
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
)
# course session Überbetriebliche Kurse Lehrjahr 1 - Region Zürich
cs = CourseSession.objects.create(
course_id=COURSE_UK,
title="Zürich 2023 a",
)
# 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="trainer-uk1.einstieg@eiger-versicherungen.ch"),
role=CourseSessionUser.Role.EXPERT,
)
csu.expert.add(Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-basis"))
csu = CourseSessionUser.objects.create(
course_session=cs,
user=User.objects.get(username="trainer-uk1.analyse@eiger-versicherungen.ch"),
role=CourseSessionUser.Role.EXPERT,
)
csu.expert.add(
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-haushalt-teil-2")
)
_csu = CourseSessionUser.objects.create(
course_session=cs,
user=User.objects.get(username="student-uk1-zurich@eiger-versicherungen.ch"),
)
_csu = CourseSessionUser.objects.create(
course_session=cs,
user=User.objects.get(username="michael.meier@example.com"),
)
def create_course_uk_fr():
# Überbetriebliche Kurse FR
create_versicherungsvermittlerin_with_categories(
course_id=COURSE_UK_FR, title="Course hors établissement"
)
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="Cours hors établissement année 1 - Région Fribourg",
)
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="course-hors-établissement-lp-circle-coup-denvoi")
)
_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="course-hors-établissement-lp"
):
csu.expert.add(fr_circle)
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,
course_session=course_session,
completion_data={
subtask["id"]: {
"user_data": {"text": user_text},
}
},
)
update_assignment_completion(
assignment_user=user,
assignment=assignment,
course_session=course_session,
completion_status="SUBMITTED",
)
def create_course_uk_de_completion_data(course_session):
# initial completion data
for slug, status, email in [
(
"überbetriebliche-kurse-competence-crit-e4pvük4-allgemein",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-mediathek",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-vorbereitungsauftrag",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-selbsteinschätzung",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-unterlagen-für-den-unterricht",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-competence-crit-e4pvük3-allgemein",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-mediathek",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-wissens-und-verständnisfragen",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-vorbereitungsauftrag",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-competence-crit-e4pvük1-allgemein",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-reflexion",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-feedback",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-vorbereitungsauftrag",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-competence-crit-d2pvük4-allgemein",
"fail",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-verschaffe-dir-einen-überblick",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-kickoff-ls-training",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-ls-transfer",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lu-vorbereitung",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-competence-crit-d2pvük3-allgemein",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-vorbereitungsauftrag",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-ls-transfer",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-ls-transfer",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-reflexion",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-feedback",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-competence-crit-d2pvük2-allgemein",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-mediathek-fahrzeug",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-vorbereitungsauftrag",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-wissens-und-verständnisfragen",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-ls-training",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-competence-crit-d2pvük1-allgemein",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-vorbereitungsauftrag",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-verschaffe-dir-einen-überblick",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-unterlagen-für-den-unterricht",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-competence-crit-c3pvük7-allgemein",
"fail",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-selbsteinschätzung",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-selbsteinschätzung",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-reflexion",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-competence-crit-c3pvük11-allgemein",
"fail",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-mediathek-haushalt-teil-1",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-feedback",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-unterlagen-für-den-unterricht",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-mediathek-haushalt-teil-1",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-selbsteinschätzung",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-vorbereitungsauftrag",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-verschaffe-dir-einen-überblick",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-reflexion",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-mediathek-haushalt-teil-1",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-vorbereitungsauftrag",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-verschaffe-dir-einen-überblick",
"success",
"michael.meier@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lu-vorbereitung",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-competence-crit-e4pvük4-allgemein",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-mediathek",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-vorbereitungsauftrag",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-selbsteinschätzung",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-unterlagen-für-den-unterricht",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-competence-crit-e4pvük3-allgemein",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-mediathek",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-wissens-und-verständnisfragen",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-vorbereitungsauftrag",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-competence-crit-e4pvük1-allgemein",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-reflexion",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-feedback",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-vorbereitungsauftrag",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-competence-crit-d2pvük4-allgemein",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-verschaffe-dir-einen-überblick",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-kickoff-ls-training",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-ls-transfer",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-competence-crit-d2pvük3-allgemein",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-vorbereitungsauftrag",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-ls-transfer",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-ls-transfer",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-reflexion",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-feedback",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-competence-crit-d2pvük2-allgemein",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-mediathek-fahrzeug",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-vorbereitungsauftrag",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-wissens-und-verständnisfragen",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-ls-training",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-competence-crit-d2pvük1-allgemein",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-vorbereitungsauftrag",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-verschaffe-dir-einen-überblick",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-unterlagen-für-den-unterricht",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-competence-crit-c3pvük7-allgemein",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-competence-crit-c3pvük11-allgemein",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-selbsteinschätzung",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-selbsteinschätzung",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-reflexion",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-mediathek-haushalt-teil-1",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-verschaffe-dir-einen-überblick",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-unterlagen-für-den-unterricht",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-vorbereitungsauftrag",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-verschaffe-dir-einen-überblick",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-wissens-und-verständnisfragen",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-vorbereitungsauftrag",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-unterlagen-für-den-unterricht",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-mediathek-haushalt-teil-1",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-selbsteinschätzung",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-vorbereitungsauftrag",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-verschaffe-dir-einen-überblick",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-reflexion",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-mediathek-haushalt-teil-2",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-verschaffe-dir-einen-überblick",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-mediathek-haushalt-teil-1",
"success",
"lina.egger@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lu-vorbereitung",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-competence-crit-e4pvük4-allgemein",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-mediathek",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-vorbereitungsauftrag",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-selbsteinschätzung",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-unterlagen-für-den-unterricht",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-competence-crit-e4pvük3-allgemein",
"fail",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-mediathek",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-wissens-und-verständnisfragen",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-vorbereitungsauftrag",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-competence-crit-e4pvük1-allgemein",
"fail",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-reflexion",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-feedback",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-vorbereitungsauftrag",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-competence-crit-d2pvük4-allgemein",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-verschaffe-dir-einen-überblick",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-kickoff-ls-training",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-ls-transfer",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-competence-crit-d2pvük3-allgemein",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-vorbereitungsauftrag",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-basis-lc-feedback",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-competence-crit-d2pvük2-allgemein",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-mediathek-fahrzeug",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-wissens-und-verständnisfragen",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-vorbereitungsauftrag",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-ls-training",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-competence-crit-d2pvük1-allgemein",
"fail",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-vorbereitungsauftrag",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-verschaffe-dir-einen-überblick",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-unterlagen-für-den-unterricht",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-competence-crit-c3pvük7-allgemein",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-competence-crit-c3pvük11-allgemein",
"fail",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-selbsteinschätzung",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-selbsteinschätzung",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-reflexion",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-mediathek-haushalt-teil-1",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-feedback",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-verschaffe-dir-einen-überblick",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-wissens-und-verständnisfragen",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-verschaffe-dir-einen-überblick",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-unterlagen-für-den-unterricht",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-mediathek-haushalt-teil-1",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-selbsteinschätzung",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-vorbereitungsauftrag",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-verschaffe-dir-einen-überblick",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-reflexion",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-selbsteinschätzung",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-feedback",
"success",
"evelyn.schmid@example.com",
),
(
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-mediathek-haushalt-teil-2",
"success",
"evelyn.schmid@example.com",
),
]:
mark_course_completion(
Page.objects.get(slug=slug).translation_key,
User.objects.get(email=email),
course_session=course_session,
completion_status=status,
)