Merged in feature/VBV-473-vv-fr-it (pull request #174)

Sturktur für Vermittler IT/FR, Update üK

Approved-by: Elia Bieri
This commit is contained in:
Christian Cueni 2023-08-03 06:17:50 +00:00
commit ed1fce2bd6
11 changed files with 1134 additions and 310 deletions

View File

@ -152,8 +152,8 @@
"imprintText": "Impressum" "imprintText": "Impressum"
}, },
"general": { "general": {
"back": "zurück", "back": "capit",
"backCapitalized": "@.capitalize:general.back", "backCapitalized": "Zurück",
"backToCircle": "zurück zum Circle", "backToCircle": "zurück zum Circle",
"backToLearningPath": "zurück zum Lernpfad", "backToLearningPath": "zurück zum Lernpfad",
"certificate_one": "Zertifikat", "certificate_one": "Zertifikat",
@ -210,6 +210,8 @@
}, },
"login": { "login": {
"demoLogin": "Demo Login", "demoLogin": "Demo Login",
"guidelineFile": "Registrierung _myVBV.pptx",
"guidelineText": "Erfahre wie du dich als üK-Lernende/r registrieren kannst",
"login": "Login", "login": "Login",
"ssoLogin": "SSO Login/Registration", "ssoLogin": "SSO Login/Registration",
"ssoText": "Klicke auf den Button, um dich über SSO anzumelden oder zu registrieren.", "ssoText": "Klicke auf den Button, um dich über SSO anzumelden oder zu registrieren.",

View File

@ -90,6 +90,8 @@ const getNextStepLink = (courseSession: CourseSession) => {
{{ $t("uk.contact.team") }} {{ $t("uk.contact.team") }}
<br /> <br />
{{ $t("uk.contact.address") }} {{ $t("uk.contact.address") }}
<br />
<a href="mailto:uek-support@vbv-afa.ch">uk.contact.email</a>
</p> </p>
</address> </address>
</div> </div>

View File

@ -26,9 +26,18 @@ const userStore = useUserStore();
<main class="bg-gray-200 lg:px-12 lg:py-12"> <main class="bg-gray-200 lg:px-12 lg:py-12">
<div class="container-medium"> <div class="container-medium">
<h1 class="mb-8">{{ $t("login.welcomeUk") }}</h1> <h1 class="mb-8">{{ $t("login.welcomeUk") }}</h1>
<p> <p class="mb-8">
{{ $t("login.welcomeText") }} {{ $t("login.welcomeText") }}
</p> </p>
<p>
<a
class="link"
:href="`/static/media/uk/${$t('login.guidelineFile')}`"
target="_blank"
>
{{ $t("login.guidelineText") }}
</a>
</p>
</div> </div>
<div class="container-medium"> <div class="container-medium">
<h1 class="mb-8">{{ $t("login.login") }}</h1> <h1 class="mb-8">{{ $t("login.login") }}</h1>
@ -102,6 +111,10 @@ const userStore = useUserStore();
{{ $t("uk.contact.team") }} {{ $t("uk.contact.team") }}
<br /> <br />
{{ $t("uk.contact.address") }} {{ $t("uk.contact.address") }}
<br />
<a class="link" href="mailto:uek-support@vbv-afa.ch">
uek-support@vbv-afa.ch
</a>
</p> </p>
</address> </address>
</div> </div>

File diff suppressed because it is too large Load Diff

View File

@ -2,12 +2,14 @@ DEFAULT_RICH_TEXT_FEATURES = [
"ul", "ul",
"bold", "bold",
"italic", "italic",
"link",
] ]
DEFAULT_RICH_TEXT_FEATURES_WITH_HEADER = [ DEFAULT_RICH_TEXT_FEATURES_WITH_HEADER = [
"ul", "ul",
"bold", "bold",
"italic", "italic",
"h3", "h3",
"link",
] ]
# ids for cypress test data # ids for cypress test data

View File

@ -6,3 +6,5 @@ COURSE_UK_TRAINING = -6
COURSE_UK_TRAINING_FR = -7 COURSE_UK_TRAINING_FR = -7
COURSE_UK_IT = -8 COURSE_UK_IT = -8
COURSE_UK_TRAINING_IT = -9 COURSE_UK_TRAINING_IT = -9
COURSE_VERSICHERUNGSVERMITTLERIN_FR_ID = -10
COURSE_VERSICHERUNGSVERMITTLERIN_IT_ID = -11

View File

@ -417,6 +417,13 @@ Dans ce cercle, tu apprendras comment les cours interentreprises sont structuré
) )
LearningSequenceFactory(title="Transfert", parent=circle, icon="it-icon-ls-end") LearningSequenceFactory(title="Transfert", parent=circle, icon="it-icon-ls-end")
LearningUnitFactory(title="Réflexion", title_hidden=True, parent=circle) LearningUnitFactory(title="Réflexion", title_hidden=True, parent=circle)
LearningContentAssignmentFactory(
title="Redlichkeitserklärung",
parent=circle,
content_assignment=Assignment.objects.get(
slug__startswith="überbetriebliche-kurse-assignment-redlichkeits"
),
)
LearningContentAssignmentFactory( LearningContentAssignmentFactory(
title="Réflexion", title="Réflexion",
assignment_type="REFLECTION", assignment_type="REFLECTION",
@ -505,6 +512,13 @@ In questo Circle imparerai come sono strutturati i corsi interaziendali. Imparer
) )
LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end") LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
LearningUnitFactory(title="Reflexion", title_hidden=True, parent=circle) LearningUnitFactory(title="Reflexion", title_hidden=True, parent=circle)
LearningContentAssignmentFactory(
title="Redlichkeitserklärung",
parent=circle,
content_assignment=Assignment.objects.get(
slug__startswith="überbetriebliche-kurse-assignment-redlichkeits"
),
)
LearningContentAssignmentFactory( LearningContentAssignmentFactory(
title="Reflexion", title="Reflexion",
assignment_type="REFLECTION", assignment_type="REFLECTION",

View File

@ -4,6 +4,7 @@ from datetime import datetime, timedelta
import djclick as click import djclick as click
from dateutil.relativedelta import MO, relativedelta, TH, TU from dateutil.relativedelta import MO, relativedelta, TH, TU
from django.conf import settings
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 (
@ -11,11 +12,15 @@ from vbv_lernwelt.assignment.creators.create_assignments import (
create_uk_condition_acceptance, create_uk_condition_acceptance,
create_uk_fahrzeug_casework, create_uk_fahrzeug_casework,
create_uk_fahrzeug_prep_assignment, create_uk_fahrzeug_prep_assignment,
create_uk_fr_basis_prep_assignment,
create_uk_fr_fahrzeug_casework, create_uk_fr_fahrzeug_casework,
create_uk_fr_fahrzeug_prep_assignment, create_uk_fr_fahrzeug_prep_assignment,
create_uk_fr_kickoff_prep_assignment,
create_uk_fr_reflection, create_uk_fr_reflection,
create_uk_it_basis_prep_assignment,
create_uk_it_fahrzeug_casework, create_uk_it_fahrzeug_casework,
create_uk_it_fahrzeug_prep_assignment, create_uk_it_fahrzeug_prep_assignment,
create_uk_it_kickoff_prep_assignment,
create_uk_it_reflection, create_uk_it_reflection,
create_uk_kickoff_prep_assignment, create_uk_kickoff_prep_assignment,
create_uk_reflection, create_uk_reflection,
@ -51,7 +56,9 @@ from vbv_lernwelt.course.consts import (
COURSE_UK_TRAINING, COURSE_UK_TRAINING,
COURSE_UK_TRAINING_FR, COURSE_UK_TRAINING_FR,
COURSE_UK_TRAINING_IT, COURSE_UK_TRAINING_IT,
COURSE_VERSICHERUNGSVERMITTLERIN_FR_ID,
COURSE_VERSICHERUNGSVERMITTLERIN_ID, COURSE_VERSICHERUNGSVERMITTLERIN_ID,
COURSE_VERSICHERUNGSVERMITTLERIN_IT_ID,
) )
from vbv_lernwelt.course.creators.test_course import create_test_course from vbv_lernwelt.course.creators.test_course import create_test_course
from vbv_lernwelt.course.creators.uk_course import ( from vbv_lernwelt.course.creators.uk_course import (
@ -107,6 +114,8 @@ ADMIN_EMAILS = ["info@iterativ.ch", "admin"]
COURSE_TEST_ID, COURSE_TEST_ID,
COURSE_UK, COURSE_UK,
COURSE_VERSICHERUNGSVERMITTLERIN_ID, COURSE_VERSICHERUNGSVERMITTLERIN_ID,
COURSE_VERSICHERUNGSVERMITTLERIN_FR_ID,
COURSE_VERSICHERUNGSVERMITTLERIN_IT_ID,
COURSE_UK_FR, COURSE_UK_FR,
COURSE_UK_IT, COURSE_UK_IT,
COURSE_UK_TRAINING, COURSE_UK_TRAINING,
@ -120,17 +129,22 @@ def command(course):
if COURSE_VERSICHERUNGSVERMITTLERIN_ID in course: if COURSE_VERSICHERUNGSVERMITTLERIN_ID in course:
create_versicherungsvermittlerin_course() create_versicherungsvermittlerin_course()
if COURSE_VERSICHERUNGSVERMITTLERIN_FR_ID in course:
create_versicherungsvermittlerin_course(
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_FR_ID, language="fr"
)
if COURSE_UK in course: if COURSE_UK in course:
create_course_uk_de() create_course_uk_de()
create_course_uk_de_course_sessions() create_course_uk_de_course_sessions()
create_course_uk_de_completion_data( create_course_uk_de_completion_data(
CourseSession.objects.get(title="Bern 2023 a") CourseSession.objects.get(title="Demo üK 2023 DE")
) )
create_course_uk_de_assignment_completion_data( create_course_uk_de_assignment_completion_data(
assignment=Assignment.objects.get( assignment=Assignment.objects.get(
slug="überbetriebliche-kurse-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice" slug="überbetriebliche-kurse-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice"
), ),
course_session=CourseSession.objects.get(title="Bern 2023 a"), course_session=CourseSession.objects.get(title="Demo üK 2023 DE"),
user=User.objects.get(email="lina.egger@example.com"), user=User.objects.get(email="lina.egger@example.com"),
) )
@ -153,11 +167,18 @@ def command(course):
create_course_training_it() create_course_training_it()
def create_versicherungsvermittlerin_course(): def create_versicherungsvermittlerin_course(
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, language="de"
):
names = {
"de": "Versicherungsvermittler/-in",
"fr": "Intermédiaire dassurance",
"it": "Intermediario/a assicurativo/a",
}
# Versicherungsvermittler/in mit neuen Circles # Versicherungsvermittler/in mit neuen Circles
course = create_versicherungsvermittlerin_with_categories( course = create_versicherungsvermittlerin_with_categories(
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, course_id=course_id,
title="Versicherungsvermittler/-in", title=names[language],
) )
# assignments create assignments parent page # assignments create assignments parent page
@ -165,62 +186,61 @@ def create_versicherungsvermittlerin_course():
parent=course.coursepage, parent=course.coursepage,
) )
create_vv_new_competence_profile(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID) create_vv_new_competence_profile(course_id=course_id)
create_default_media_library(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID) create_default_media_library(course_id=course_id)
create_vv_einkommenssicherung_casework( create_vv_einkommenssicherung_casework(course_id=course_id)
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID create_vv_gesundheit_casework(course_id=course_id)
) create_vv_gewinnen_casework(course_id=course_id)
create_vv_gesundheit_casework(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID) create_vv_reflection(course_id=course_id)
create_vv_gewinnen_casework(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID) create_vv_new_learning_path(course_id=course_id)
create_vv_reflection(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID)
create_vv_new_learning_path()
cs = CourseSession.objects.create( cs = CourseSession.objects.create(course_id=course_id, title=names[language])
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID,
title="Versicherungsvermittler/-in", if language == "de":
) for user_data in default_users:
for user_data in default_users: CourseSessionUser.objects.create(
CourseSessionUser.objects.create( course_session=cs,
user=User.objects.get(username=user_data["email"]),
)
csu = CourseSessionUser.objects.create(
course_session=cs, course_session=cs,
user=User.objects.get(username=user_data["email"]), 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,
) )
csu = CourseSessionUser.objects.create( expert2 = 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, course_session=cs,
user=User.objects.get(email=admin_email), 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"): def create_course_uk_de(course_id=COURSE_UK, lang="de"):
names = { names = {
@ -254,7 +274,7 @@ def create_course_uk_de_course_sessions():
cs = CourseSession.objects.create( cs = CourseSession.objects.create(
course_id=COURSE_UK, course_id=COURSE_UK,
title="Bern 2023 a", title="Demo üK 2023 DE",
) )
csac = CourseSessionAttendanceCourse.objects.create( csac = CourseSessionAttendanceCourse.objects.create(
@ -372,39 +392,6 @@ def create_course_uk_de_course_sessions():
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-basis"), cs, 4 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(): def create_course_uk_fr():
# Überbetriebliche Kurse FR # Überbetriebliche Kurse FR
@ -416,6 +403,10 @@ def create_course_uk_fr():
_assignment_list_page = AssignmentListPageFactory( _assignment_list_page = AssignmentListPageFactory(
parent=course.coursepage, 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_casework(course_id=COURSE_UK_FR)
create_uk_fr_fahrzeug_prep_assignment(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_reflection(course_id=COURSE_UK_FR)
@ -425,7 +416,7 @@ def create_course_uk_fr():
cs = CourseSession.objects.create( cs = CourseSession.objects.create(
course_id=COURSE_UK_FR, course_id=COURSE_UK_FR,
title="Cours interentreprises année 1 - Région Fribourg", title="Demo ci 2023 FR",
) )
csu = CourseSessionUser.objects.create( csu = CourseSessionUser.objects.create(
@ -462,6 +453,9 @@ def create_course_uk_it():
_assignment_list_page = AssignmentListPageFactory( _assignment_list_page = AssignmentListPageFactory(
parent=course.coursepage, 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_casework(course_id=COURSE_UK_IT)
create_uk_it_fahrzeug_prep_assignment(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_reflection(course_id=COURSE_UK_IT)
@ -469,10 +463,11 @@ def create_course_uk_it():
create_uk_it_competence_profile(course_id=COURSE_UK_IT) create_uk_it_competence_profile(course_id=COURSE_UK_IT)
create_default_media_library(course_id=COURSE_UK_IT) create_default_media_library(course_id=COURSE_UK_IT)
_cs = CourseSession.objects.create( if settings.APP_ENVIRONMENT != "production":
course_id=COURSE_UK_IT, _cs = CourseSession.objects.create(
title="Corso interaziendale Ticino", course_id=COURSE_UK_IT,
) title="Demo ci 2023 IT",
)
def create_course_uk_de_assignment_completion_data(assignment, course_session, user): def create_course_uk_de_assignment_completion_data(assignment, course_session, user):
@ -601,7 +596,7 @@ def create_course_training_de():
) )
] ]
cs = CourseSession.objects.get(course_id=COURSE_UK, title="Bern 2023 a") cs = CourseSession.objects.get(course_id=COURSE_UK, title="Demo üK 2023 DE")
for user in users: for user in users:
csu, _created = CourseSessionUser.objects.get_or_create( csu, _created = CourseSessionUser.objects.get_or_create(
@ -706,7 +701,7 @@ def create_course_training_fr():
cs = CourseSession.objects.get( cs = CourseSession.objects.get(
course_id=COURSE_UK_FR, course_id=COURSE_UK_FR,
title="Cours interentreprises année 1 - Région Fribourg", title="Demo ci 2023 FR",
) )
for user in users: for user in users:
@ -793,7 +788,7 @@ def create_course_training_it():
cs = CourseSession.objects.get( cs = CourseSession.objects.get(
course_id=COURSE_UK_IT, course_id=COURSE_UK_IT,
title="Corso interaziendale Ticino", title="Demo ci 2023 IT",
) )
for user in users: for user in users:

View File

@ -61,18 +61,18 @@ class EdoniqUserExportTestCase(TestCase):
expected_response_data = [ expected_response_data = [
[ [
"login", "login",
"firstName", "firstname",
"lastName", "lastname",
"gender", "gender",
"preferredLanguage", "preferred_language",
"emailBusiness", "email",
"birthday", "birthday",
"group", "group",
"region", "region",
"division", "division",
"organisationUnit", "oe",
"superiorLogin", "superior_login",
], ]
] + user_data ] + user_data
# Perform assertions on the response # Perform assertions on the response

View File

@ -35,17 +35,17 @@ def generate_export_response(cs_users: List[CourseSessionUser]) -> HttpResponse:
writer.writerow( writer.writerow(
[ [
"login", "login",
"firstName", "firstname",
"lastName", "lastname",
"gender", "gender",
"preferredLanguage", "preferred_language",
"emailBusiness", "email",
"birthday", "birthday",
"group", "group",
"region", "region",
"division", "division",
"organisationUnit", "oe",
"superiorLogin", "superior_login",
] ]
) )

View File

@ -110,7 +110,7 @@ def create_circle_basis(lp, title="Basis"):
LearningContentPlaceholderFactory( LearningContentPlaceholderFactory(
title="Mediathek", title="Mediathek",
parent=circle, parent=circle,
content_url="/course/versicherungsvermittler-in/media", content_url=f"/course/{circle.get_course().slug}/media",
) )
LearningContentPlaceholderFactory( LearningContentPlaceholderFactory(
title="Qualifikationsprofil und Zulassungsprüfung", title="Qualifikationsprofil und Zulassungsprüfung",
@ -227,7 +227,7 @@ def create_circle_gewinnen(lp, title="Gewinnen"):
LearningContentPlaceholderFactory( LearningContentPlaceholderFactory(
title="Mediathek", title="Mediathek",
parent=circle, parent=circle,
content_url="/course/versicherungsvermittler-in/media", content_url=f"/course/{course_slug}/media",
) )
LearningContentPlaceholderFactory( LearningContentPlaceholderFactory(
title="Die ersten Schritte im Verkauf", title="Die ersten Schritte im Verkauf",
@ -251,7 +251,7 @@ def create_circle_gewinnen(lp, title="Gewinnen"):
LearningContentPlaceholderFactory( LearningContentPlaceholderFactory(
title="Mediathek", title="Mediathek",
parent=circle, parent=circle,
content_url="/course/versicherungsvermittler-in/media", content_url=f"/course/{course_slug}/media",
) )
LearningContentPlaceholderFactory( LearningContentPlaceholderFactory(
title="Vom Lead zum Termin/Telefon auf Empfehlung/Neukundengewinnung", title="Vom Lead zum Termin/Telefon auf Empfehlung/Neukundengewinnung",
@ -276,7 +276,7 @@ def create_circle_gewinnen(lp, title="Gewinnen"):
assignment_type="REFLECTION", assignment_type="REFLECTION",
parent=circle, parent=circle,
content_assignment=Assignment.objects.get( content_assignment=Assignment.objects.get(
slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" slug__startswith=f"{course_slug}-assignment-reflexion"
), ),
), ),
LearningContentFeedbackFactory( LearningContentFeedbackFactory(
@ -300,7 +300,7 @@ def create_circle_fahrzeug(lp, title="Fahrzeug"):
LearningContentMediaLibraryFactory( LearningContentMediaLibraryFactory(
title=f"Mediathek {title}", title=f"Mediathek {title}",
parent=circle, parent=circle,
content_url=f"/course/versicherungsvermittler-in/media/handlungsfelder/fahrzeug", content_url=f"/course/{circle.get_course().slug}/media/handlungsfelder/fahrzeug",
) )
LearningSequenceFactory(title="Einstieg", parent=circle) LearningSequenceFactory(title="Einstieg", parent=circle)
@ -308,6 +308,7 @@ def create_circle_fahrzeug(lp, title="Fahrzeug"):
"Rafael Fasel wechselt sein Auto - Einstieg", "Rafael Fasel wechselt sein Auto - Einstieg",
parent=circle, parent=circle,
category_name="Fahrzeug", category_name="Fahrzeug",
course=circle.get_course(),
competence_id="V1", competence_id="V1",
wbt_url="https://courses.my.vbv-afa.ch/courses/de-fz-01-rafael-fasel-wechselt-sein-auto-einstieg.zip/index.html#/", wbt_url="https://courses.my.vbv-afa.ch/courses/de-fz-01-rafael-fasel-wechselt-sein-auto-einstieg.zip/index.html#/",
learning_unit_title="Gesprächsvorbereitung und -einstieg", learning_unit_title="Gesprächsvorbereitung und -einstieg",
@ -318,6 +319,7 @@ def create_circle_fahrzeug(lp, title="Fahrzeug"):
"Rafael Fasel wechselt sein Auto - Analyse", "Rafael Fasel wechselt sein Auto - Analyse",
parent=circle, parent=circle,
category_name="Fahrzeug", category_name="Fahrzeug",
course=circle.get_course(),
competence_id="V2", competence_id="V2",
wbt_url="https://courses.my.vbv-afa.ch/courses/de-fz-02-rafael-fasel-wechselt-sein-auto-analyse.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-fz-02-rafael-fasel-wechselt-sein-auto-analyse.zip/index.html",
learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation", learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation",
@ -328,6 +330,7 @@ def create_circle_fahrzeug(lp, title="Fahrzeug"):
"Rafael Fasel wechselt sein Auto - Lösung", "Rafael Fasel wechselt sein Auto - Lösung",
parent=circle, parent=circle,
category_name="Fahrzeug", category_name="Fahrzeug",
course=circle.get_course(),
competence_id="V3", competence_id="V3",
wbt_url="https://courses.my.vbv-afa.ch/courses/de-fz-03-rafael-fasel-wechselt-sein-auto-losung.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-fz-03-rafael-fasel-wechselt-sein-auto-losung.zip/index.html",
learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren", learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren",
@ -338,6 +341,7 @@ def create_circle_fahrzeug(lp, title="Fahrzeug"):
"Rafael Fasel wechselt sein Auto - Abschluss", "Rafael Fasel wechselt sein Auto - Abschluss",
parent=circle, parent=circle,
category_name="Fahrzeug", category_name="Fahrzeug",
course=circle.get_course(),
competence_id="V4", competence_id="V4",
wbt_url="https://courses.my.vbv-afa.ch/courses/de-fz-04-rafael-fasel-wechselt-sein-auto-abschluss.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-fz-04-rafael-fasel-wechselt-sein-auto-abschluss.zip/index.html",
learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung", learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung",
@ -363,7 +367,7 @@ def create_circle_fahrzeug(lp, title="Fahrzeug"):
assignment_type="REFLECTION", assignment_type="REFLECTION",
parent=circle, parent=circle,
content_assignment=Assignment.objects.get( content_assignment=Assignment.objects.get(
slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" slug__startswith=f"{circle.get_course().slug}-assignment-reflexion"
), ),
), ),
LearningContentFeedbackFactory( LearningContentFeedbackFactory(
@ -387,7 +391,7 @@ def create_circle_haushalt(lp, title="Haushalt"):
LearningContentMediaLibraryFactory( LearningContentMediaLibraryFactory(
title=f"Mediathek {title}", title=f"Mediathek {title}",
parent=circle, parent=circle,
content_url=f"/course/versicherungsvermittler-in/media/handlungsfelder/{slugify(title)}", content_url=f"/course/{circle.get_course().slug}/media/handlungsfelder/{slugify(title)}",
) )
LearningSequenceFactory(title="Einstieg", parent=circle) LearningSequenceFactory(title="Einstieg", parent=circle)
@ -395,6 +399,7 @@ def create_circle_haushalt(lp, title="Haushalt"):
"Rafael und Claudia ziehen zusammen - Einstieg", "Rafael und Claudia ziehen zusammen - Einstieg",
parent=circle, parent=circle,
category_name="Haushalt", category_name="Haushalt",
course=circle.get_course(),
competence_id="V1", # todo: fix competence_id="V1", # todo: fix
wbt_url="https://courses.my.vbv-afa.ch/courses/de-hh-01-rafael-und-claudia-ziehen-zusammen-einstieg.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-hh-01-rafael-und-claudia-ziehen-zusammen-einstieg.zip/index.html",
learning_unit_title="Gesprächsvorbereitung und -einstieg", learning_unit_title="Gesprächsvorbereitung und -einstieg",
@ -405,6 +410,7 @@ def create_circle_haushalt(lp, title="Haushalt"):
"Rafael und Claudia ziehen zusammen - Analyse", "Rafael und Claudia ziehen zusammen - Analyse",
parent=circle, parent=circle,
category_name="Haushalt", category_name="Haushalt",
course=circle.get_course(),
competence_id="V1", # todo: fix competence_id="V1", # todo: fix
wbt_url="https://courses.my.vbv-afa.ch/courses/de-hh-02-rafael-und-claudia-ziehen-zusammen-analyse.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-hh-02-rafael-und-claudia-ziehen-zusammen-analyse.zip/index.html",
learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation", learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation",
@ -415,6 +421,7 @@ def create_circle_haushalt(lp, title="Haushalt"):
"Rafael und Claudia ziehen zusammen - Lösung", "Rafael und Claudia ziehen zusammen - Lösung",
parent=circle, parent=circle,
category_name="Haushalt", category_name="Haushalt",
course=circle.get_course(),
competence_id="V1", # todo: fix competence_id="V1", # todo: fix
wbt_url="https://courses.my.vbv-afa.ch/courses/de-hh-03-rafael-und-claudia-ziehen-zusammen-losung.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-hh-03-rafael-und-claudia-ziehen-zusammen-losung.zip/index.html",
learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung", learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung",
@ -425,6 +432,7 @@ def create_circle_haushalt(lp, title="Haushalt"):
"Rafael und Claudia ziehen zusammen - Abschluss", "Rafael und Claudia ziehen zusammen - Abschluss",
parent=circle, parent=circle,
category_name="Haushalt", category_name="Haushalt",
course=circle.get_course(),
competence_id="V1", # todo: fix competence_id="V1", # todo: fix
wbt_url="https://courses.my.vbv-afa.ch/courses/de-hh-04-rafael-und-claudia-ziehen-zusammen-abschluss.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-hh-04-rafael-und-claudia-ziehen-zusammen-abschluss.zip/index.html",
learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung", learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung",
@ -449,7 +457,7 @@ def create_circle_rechtsstreitigkeiten(lp, title="Rechtsstreitigkeiten"):
LearningContentMediaLibraryFactory( LearningContentMediaLibraryFactory(
title=f"Mediathek {title}", title=f"Mediathek {title}",
parent=circle, parent=circle,
content_url=f"/course/versicherungsvermittler-in/media/handlungsfelder/{slugify(title)}", content_url=f"/course/{circle.get_course().slug}/media/handlungsfelder/{slugify(title)}",
) )
LearningSequenceFactory(title="Rechtsstreitigkeiten", parent=circle) LearningSequenceFactory(title="Rechtsstreitigkeiten", parent=circle)
@ -457,6 +465,7 @@ def create_circle_rechtsstreitigkeiten(lp, title="Rechtsstreitigkeiten"):
"Rafael Fasel hat Ärger mit seinem Vermieter", "Rafael Fasel hat Ärger mit seinem Vermieter",
parent=circle, parent=circle,
category_name=title, category_name=title,
course=circle.get_course(),
competence_id="V1", competence_id="V1",
wbt_url="https://courses.my.vbv-afa.ch/courses/de-rs-00-rafael-fasel-hat-arger-mit-seinem-vermieter.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-rs-00-rafael-fasel-hat-arger-mit-seinem-vermieter.zip/index.html",
learning_unit_title="Terminvereinbarung, Vorbereitung und Gesprächseröffnung", learning_unit_title="Terminvereinbarung, Vorbereitung und Gesprächseröffnung",
@ -482,7 +491,7 @@ def create_circle_reisen(lp, title="Reisen"):
LearningContentMediaLibraryFactory( LearningContentMediaLibraryFactory(
title=f"Mediathek {title}", title=f"Mediathek {title}",
parent=circle, parent=circle,
content_url=f"/course/versicherungsvermittler-in/media/handlungsfelder/{slugify(title)}", content_url=f"/course/{circle.get_course().slug}/media/handlungsfelder/{slugify(title)}",
) )
LearningSequenceFactory(title="Einstieg", parent=circle) LearningSequenceFactory(title="Einstieg", parent=circle)
@ -490,6 +499,7 @@ def create_circle_reisen(lp, title="Reisen"):
"Emma und Ayla campen durch Amerika - Einstieg", "Emma und Ayla campen durch Amerika - Einstieg",
parent=circle, parent=circle,
category_name=title, category_name=title,
course=circle.get_course(),
competence_id="V1", competence_id="V1",
wbt_url="https://courses.my.vbv-afa.ch/courses/de-re-01-emma-und-ayla-campen-durch-amerika-einstieg.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-re-01-emma-und-ayla-campen-durch-amerika-einstieg.zip/index.html",
learning_unit_title="Terminvereinbarung, Vorbereitung und Gesprächseröffnung", learning_unit_title="Terminvereinbarung, Vorbereitung und Gesprächseröffnung",
@ -500,6 +510,7 @@ def create_circle_reisen(lp, title="Reisen"):
"Emma und Ayla campen durch Amerika - Analyse", "Emma und Ayla campen durch Amerika - Analyse",
parent=circle, parent=circle,
category_name=title, category_name=title,
course=circle.get_course(),
competence_id="V2", competence_id="V2",
wbt_url="https://courses.my.vbv-afa.ch/courses/de-re-02-emma-und-ayla-campen-durch-amerika-analyse.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-re-02-emma-und-ayla-campen-durch-amerika-analyse.zip/index.html",
learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation", learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation",
@ -510,6 +521,7 @@ def create_circle_reisen(lp, title="Reisen"):
"Emma und Ayla campen durch Amerika - Lösung", "Emma und Ayla campen durch Amerika - Lösung",
parent=circle, parent=circle,
category_name=title, category_name=title,
course=circle.get_course(),
competence_id="V3", competence_id="V3",
wbt_url="https://courses.my.vbv-afa.ch/courses/de-re-03-emma-und-ayla-campen-durch-amerika-losung.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-re-03-emma-und-ayla-campen-durch-amerika-losung.zip/index.html",
learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren", learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren",
@ -520,6 +532,7 @@ def create_circle_reisen(lp, title="Reisen"):
"Emma und Ayla campen durch Amerika - Abschluss", "Emma und Ayla campen durch Amerika - Abschluss",
parent=circle, parent=circle,
category_name=title, category_name=title,
course=circle.get_course(),
competence_id="V4", competence_id="V4",
wbt_url="https://courses.my.vbv-afa.ch/courses/de-re-04-emma-und-ayla-campen-durch-amerika-abschluss.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-re-04-emma-und-ayla-campen-durch-amerika-abschluss.zip/index.html",
learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung", learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung",
@ -540,7 +553,7 @@ def create_circle_reisen(lp, title="Reisen"):
assignment_type="REFLECTION", assignment_type="REFLECTION",
parent=circle, parent=circle,
content_assignment=Assignment.objects.get( content_assignment=Assignment.objects.get(
slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" slug__startswith=f"{circle.get_course().slug}-assignment-reflexion"
), ),
), ),
LearningContentFeedbackFactory( LearningContentFeedbackFactory(
@ -565,7 +578,7 @@ def create_circle_einkommenssicherung(lp, title="Einkommenssicherung"):
LearningContentMediaLibraryFactory( LearningContentMediaLibraryFactory(
title=f"Mediathek {title}", title=f"Mediathek {title}",
parent=circle, parent=circle,
content_url=f"/course/versicherungsvermittler-in/media/handlungsfelder/{slugify(title)}", content_url=f"/course/{circle.get_course().slug}/media/handlungsfelder/{slugify(title)}",
) )
LearningSequenceFactory(title="Einstieg", parent=circle) LearningSequenceFactory(title="Einstieg", parent=circle)
@ -573,6 +586,7 @@ def create_circle_einkommenssicherung(lp, title="Einkommenssicherung"):
"Patrizia und Marco sichern sich ab - Einstieg", "Patrizia und Marco sichern sich ab - Einstieg",
parent=circle, parent=circle,
category_name=title, category_name=title,
course=circle.get_course(),
competence_id="V1", competence_id="V1",
wbt_url="https://courses.my.vbv-afa.ch/courses/de-ek-01-patrizia-marco-sichern-sich-ab-einstieg.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-ek-01-patrizia-marco-sichern-sich-ab-einstieg.zip/index.html",
learning_unit_title="Terminvereinbarung, Vorbereitung und Gesprächseröffnung", learning_unit_title="Terminvereinbarung, Vorbereitung und Gesprächseröffnung",
@ -583,9 +597,10 @@ def create_circle_einkommenssicherung(lp, title="Einkommenssicherung"):
"Patrizia und Marco sichern sich ab - Analyse", "Patrizia und Marco sichern sich ab - Analyse",
parent=circle, parent=circle,
category_name=title, category_name=title,
competence_id="V2", course=circle.get_course(),
wbt_url="https://courses.my.vbv-afa.ch/courses/de-ek-02-patrizia-marco-sichern-sich-ab-analyse.zip/index.html", competence_id="V1",
learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation", wbt_url="https://courses.my.vbv-afa.ch/courses/de-ek-01-patrizia-marco-sichern-sich-ab-einstieg.zip/index.html",
learning_unit_title="Terminvereinbarung, Vorbereitung und Gesprächseröffnung",
) )
LearningSequenceFactory(title="Lösung", parent=circle) LearningSequenceFactory(title="Lösung", parent=circle)
@ -593,9 +608,10 @@ def create_circle_einkommenssicherung(lp, title="Einkommenssicherung"):
"Patrizia und Marco sichern sich ab - Lösung", "Patrizia und Marco sichern sich ab - Lösung",
parent=circle, parent=circle,
category_name=title, category_name=title,
competence_id="V3", course=circle.get_course(),
wbt_url="https://courses.my.vbv-afa.ch/courses/de-ek-03-patrizia-marco-sichern-sich-ab-losung.zip/index.html", competence_id="V1",
learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren", wbt_url="https://courses.my.vbv-afa.ch/courses/de-ek-01-patrizia-marco-sichern-sich-ab-einstieg.zip/index.html",
learning_unit_title="Terminvereinbarung, Vorbereitung und Gesprächseröffnung",
) )
LearningSequenceFactory(title="Abschluss", parent=circle) LearningSequenceFactory(title="Abschluss", parent=circle)
@ -603,6 +619,7 @@ def create_circle_einkommenssicherung(lp, title="Einkommenssicherung"):
"Patrizia und Marco sichern sich ab - Abschluss", "Patrizia und Marco sichern sich ab - Abschluss",
parent=circle, parent=circle,
category_name=title, category_name=title,
course=circle.get_course(),
competence_id="V4", competence_id="V4",
wbt_url="https://courses.my.vbv-afa.ch/courses/de-ek-04-patrizia-marco-sichern-sich-ab-abschluss.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-ek-04-patrizia-marco-sichern-sich-ab-abschluss.zip/index.html",
learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung", learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung",
@ -629,7 +646,7 @@ def create_circle_einkommenssicherung(lp, title="Einkommenssicherung"):
assignment_type="REFLECTION", assignment_type="REFLECTION",
parent=circle, parent=circle,
content_assignment=Assignment.objects.get( content_assignment=Assignment.objects.get(
slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" slug__startswith=f"{circle.get_course().slug}-assignment-reflexion"
), ),
), ),
LearningContentFeedbackFactory( LearningContentFeedbackFactory(
@ -653,7 +670,7 @@ def create_circle_wohneigentum(lp, title="Wohneigentum"):
LearningContentMediaLibraryFactory( LearningContentMediaLibraryFactory(
title=f"Mediathek {title}", title=f"Mediathek {title}",
parent=circle, parent=circle,
content_url=f"/course/versicherungsvermittler-in/media/handlungsfelder/{slugify(title)}", content_url=f"/course/{circle.get_course().slug}/media/handlungsfelder/{slugify(title)}",
) )
LearningSequenceFactory(title="Wohneigentum", parent=circle) LearningSequenceFactory(title="Wohneigentum", parent=circle)
@ -682,7 +699,7 @@ def create_circle_wohneigentum(lp, title="Wohneigentum"):
assignment_type="REFLECTION", assignment_type="REFLECTION",
parent=circle, parent=circle,
content_assignment=Assignment.objects.get( content_assignment=Assignment.objects.get(
slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" slug__startswith=f"{circle.get_course().slug}-assignment-reflexion"
), ),
), ),
LearningContentFeedbackFactory( LearningContentFeedbackFactory(
@ -706,7 +723,7 @@ def create_circle_pensionierung(lp, title="Pensionierung"):
LearningContentMediaLibraryFactory( LearningContentMediaLibraryFactory(
title=f"Mediathek {title}", title=f"Mediathek {title}",
parent=circle, parent=circle,
content_url=f"/course/versicherungsvermittler-in/media/handlungsfelder/{slugify(title)}", content_url=f"/course/{circle.get_course().slug}/media/handlungsfelder/{slugify(title)}",
) )
LearningSequenceFactory(title="Einstieg", parent=circle) LearningSequenceFactory(title="Einstieg", parent=circle)
@ -714,6 +731,7 @@ def create_circle_pensionierung(lp, title="Pensionierung"):
"Giulia und Davide planen ihre Pensionierung - Einstieg", "Giulia und Davide planen ihre Pensionierung - Einstieg",
parent=circle, parent=circle,
category_name=title, category_name=title,
course=circle.get_course(),
competence_id="V1", competence_id="V1",
wbt_url="https://courses.my.vbv-afa.ch/courses/de-pe-01-giulia-und-davide-planen-ihre-pensionierung-einstieg.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-pe-01-giulia-und-davide-planen-ihre-pensionierung-einstieg.zip/index.html",
learning_unit_title="Gesprächsvorbereitung und -einstieg", learning_unit_title="Gesprächsvorbereitung und -einstieg",
@ -724,6 +742,7 @@ def create_circle_pensionierung(lp, title="Pensionierung"):
"Giulia und Davide planen ihre Pensionierung - Analyse", "Giulia und Davide planen ihre Pensionierung - Analyse",
parent=circle, parent=circle,
category_name=title, category_name=title,
course=circle.get_course(),
competence_id="V2", competence_id="V2",
wbt_url="https://courses.my.vbv-afa.ch/courses/de-pe-02-giulia-und-davide-planen-ihre-pensionierung-analyse.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-pe-02-giulia-und-davide-planen-ihre-pensionierung-analyse.zip/index.html",
learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation", learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation",
@ -734,6 +753,7 @@ def create_circle_pensionierung(lp, title="Pensionierung"):
"Giulia und Davide planen ihre Pensionierung - Lösung", "Giulia und Davide planen ihre Pensionierung - Lösung",
parent=circle, parent=circle,
category_name=title, category_name=title,
course=circle.get_course(),
competence_id="V3", competence_id="V3",
wbt_url="https://courses.my.vbv-afa.ch/courses/de-pe-03-giulia-und-davide-planen-ihre-pensionierung-losung.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-pe-03-giulia-und-davide-planen-ihre-pensionierung-losung.zip/index.html",
learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren", learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren",
@ -744,6 +764,7 @@ def create_circle_pensionierung(lp, title="Pensionierung"):
"Giulia und Davide planen ihre Pensionierung - Abschluss", "Giulia und Davide planen ihre Pensionierung - Abschluss",
parent=circle, parent=circle,
category_name=title, category_name=title,
course=circle.get_course(),
competence_id="V4", competence_id="V4",
wbt_url="https://courses.my.vbv-afa.ch/courses/de-pe-04-giulia-und-davide-planen-ihre-pensionierung-abschluss.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-pe-04-giulia-und-davide-planen-ihre-pensionierung-abschluss.zip/index.html",
learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung", learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung",
@ -760,7 +781,7 @@ def create_circle_pensionierung(lp, title="Pensionierung"):
assignment_type="REFLECTION", assignment_type="REFLECTION",
parent=circle, parent=circle,
content_assignment=Assignment.objects.get( content_assignment=Assignment.objects.get(
slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" slug__startswith=f"{circle.get_course().slug}-assignment-reflexion"
), ),
), ),
LearningContentFeedbackFactory( LearningContentFeedbackFactory(
@ -784,7 +805,7 @@ def create_circle_erben(lp, title="Erben/Vererben"):
LearningContentMediaLibraryFactory( LearningContentMediaLibraryFactory(
title=f"Mediathek {title}", title=f"Mediathek {title}",
parent=circle, parent=circle,
content_url=f"/course/versicherungsvermittler-in/media/handlungsfelder/{slugify(title)}", content_url=f"/course/{circle.get_course().slug}/media/handlungsfelder/{slugify(title)}",
) )
LearningSequenceFactory(title="Erben/Vererben", parent=circle) LearningSequenceFactory(title="Erben/Vererben", parent=circle)
@ -794,7 +815,7 @@ def create_circle_erben(lp, title="Erben/Vererben"):
parent=circle, parent=circle,
) )
LearningContentPlaceholderFactory( LearningContentPlaceholderFactory(
title=f"Guilia udn Davide machen sich Gedanken", title=f"Guilia und Davide machen sich Gedanken",
parent=circle, parent=circle,
) )
LearningContentPlaceholderFactory( LearningContentPlaceholderFactory(
@ -817,7 +838,7 @@ def create_circle_erben(lp, title="Erben/Vererben"):
assignment_type="REFLECTION", assignment_type="REFLECTION",
parent=circle, parent=circle,
content_assignment=Assignment.objects.get( content_assignment=Assignment.objects.get(
slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" slug__startswith=f"{circle.get_course().slug}-assignment-reflexion"
), ),
), ),
LearningContentFeedbackFactory( LearningContentFeedbackFactory(
@ -843,7 +864,7 @@ def create_circle_gesundheit(lp, title="Gesundheit"):
LearningContentMediaLibraryFactory( LearningContentMediaLibraryFactory(
title=f"Mediathek {title}", title=f"Mediathek {title}",
parent=circle, parent=circle,
content_url=f"/course/versicherungsvermittler-in/media/handlungsfelder/{slugify(title)}", content_url=f"/course/{circle.get_course().slug}/media/handlungsfelder/{slugify(title)}",
) )
LearningSequenceFactory(title="Einstieg", parent=circle) LearningSequenceFactory(title="Einstieg", parent=circle)
@ -851,6 +872,7 @@ def create_circle_gesundheit(lp, title="Gesundheit"):
"Familie Babic erwartet Nachwuchs - Einstieg", "Familie Babic erwartet Nachwuchs - Einstieg",
parent=circle, parent=circle,
category_name=title, category_name=title,
course=circle.get_course(),
competence_id="V1", competence_id="V1",
wbt_url="https://courses.my.vbv-afa.ch/courses/de-ges-01-familie-babic-erwartet-nachwuchs-einstieg.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-ges-01-familie-babic-erwartet-nachwuchs-einstieg.zip/index.html",
learning_unit_title="Gesprächsvorbereitung und -einstieg", learning_unit_title="Gesprächsvorbereitung und -einstieg",
@ -861,6 +883,7 @@ def create_circle_gesundheit(lp, title="Gesundheit"):
"Familie Babic erwartet Nachwuchs - Analyse", "Familie Babic erwartet Nachwuchs - Analyse",
parent=circle, parent=circle,
category_name=title, category_name=title,
course=circle.get_course(),
competence_id="V2", competence_id="V2",
wbt_url="https://courses.my.vbv-afa.ch/courses/de-ges-02-familie-babic-erwartet-nachwuchs-analyse.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-ges-02-familie-babic-erwartet-nachwuchs-analyse.zip/index.html",
learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation", learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation",
@ -871,6 +894,7 @@ def create_circle_gesundheit(lp, title="Gesundheit"):
"Familie Babic erwartet Nachwuchs - Lösung", "Familie Babic erwartet Nachwuchs - Lösung",
parent=circle, parent=circle,
category_name=title, category_name=title,
course=circle.get_course(),
competence_id="V3", competence_id="V3",
wbt_url="https://courses.my.vbv-afa.ch/courses/de-ges-03-familie-babic-erwartet-nachwuchs-losung.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-ges-03-familie-babic-erwartet-nachwuchs-losung.zip/index.html",
learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren", learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren",
@ -881,6 +905,7 @@ def create_circle_gesundheit(lp, title="Gesundheit"):
"Familie Babic erwartet Nachwuchs - Abschluss", "Familie Babic erwartet Nachwuchs - Abschluss",
parent=circle, parent=circle,
category_name=title, category_name=title,
course=circle.get_course(),
competence_id="V4", competence_id="V4",
wbt_url="https://courses.my.vbv-afa.ch/courses/de-ges-04-familie-babic-erwartet-nachwuchs-abschluss.zip/index.html", wbt_url="https://courses.my.vbv-afa.ch/courses/de-ges-04-familie-babic-erwartet-nachwuchs-abschluss.zip/index.html",
learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung", learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung",
@ -903,7 +928,7 @@ def create_circle_gesundheit(lp, title="Gesundheit"):
assignment_type="REFLECTION", assignment_type="REFLECTION",
parent=circle, parent=circle,
content_assignment=Assignment.objects.get( content_assignment=Assignment.objects.get(
slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" slug__startswith=f"{circle.get_course().slug}-assignment-reflexion"
), ),
), ),
LearningContentFeedbackFactory( LearningContentFeedbackFactory(
@ -927,7 +952,7 @@ def create_circle_sparen(lp, title="Sparen"):
LearningContentMediaLibraryFactory( LearningContentMediaLibraryFactory(
title="Mediathek", title="Mediathek",
parent=circle, parent=circle,
content_url=f"/course/versicherungsvermittler-in/media/handlungsfelder/{slugify(title)}", content_url=f"/course/{circle.get_course().slug}/media/handlungsfelder/{slugify(title)}",
) )
LearningSequenceFactory(title="Sparen", parent=circle) LearningSequenceFactory(title="Sparen", parent=circle)
@ -962,7 +987,7 @@ def create_circle_selbstaendigkeit(lp, title="Selbstständigkeit"):
LearningContentMediaLibraryFactory( LearningContentMediaLibraryFactory(
title="Mediathek", title="Mediathek",
parent=circle, parent=circle,
content_url=f"/course/versicherungsvermittler-in/media/handlungsfelder/{slugify(title)}", content_url=f"/course/{circle.get_course().slug}/media/handlungsfelder/{slugify(title)}",
) )
LearningSequenceFactory(title="Selbstständigkeit", parent=circle) LearningSequenceFactory(title="Selbstständigkeit", parent=circle)
@ -995,7 +1020,7 @@ def create_circle_kmu(lp, title="KMU"):
LearningContentMediaLibraryFactory( LearningContentMediaLibraryFactory(
title=f"Mediathek {title}", title=f"Mediathek {title}",
parent=circle, parent=circle,
content_url=f"/course/versicherungsvermittler-in/media/handlungsfelder/{slugify(title)}", content_url=f"/course/{circle.get_course().slug}/media/handlungsfelder/{slugify(title)}",
) )
LearningSequenceFactory(title="Einstieg", parent=circle) LearningSequenceFactory(title="Einstieg", parent=circle)
@ -1069,7 +1094,7 @@ def create_circle_standard_small(
LearningContentMediaLibraryFactory( LearningContentMediaLibraryFactory(
title=f"Mediathek {title}", title=f"Mediathek {title}",
parent=circle, parent=circle,
content_url=f"/course/versicherungsvermittler-in/media/handlungsfelder/{slugify(title, allow_unicode=True)}", content_url=f"/course/{circle.get_course().slug}/media/handlungsfelder/{slugify(title, allow_unicode=True)}",
) )
if lu_title is None: if lu_title is None:
@ -1187,7 +1212,7 @@ def create_circle_pruefungsvorbereitung(lp, title="Prüfungsvorbereitung"):
LearningContentPlaceholderFactory( LearningContentPlaceholderFactory(
title="Mediathek", title="Mediathek",
parent=circle, parent=circle,
content_url="/course/versicherungsvermittler-in/media", content_url=f"/course/{circle.get_course().slug}/media",
) )
LearningSequenceFactory(title="Aufbau", parent=circle) LearningSequenceFactory(title="Aufbau", parent=circle)
@ -1258,6 +1283,7 @@ def create_standard_learning_unit(
title, title,
parent, parent,
category_name, category_name,
course,
competence_id="V1", competence_id="V1",
wbt_url=None, wbt_url=None,
check_url=None, check_url=None,
@ -1271,7 +1297,7 @@ def create_standard_learning_unit(
title=learning_unit_title, title=learning_unit_title,
parent=parent, parent=parent,
course_category=CourseCategory.objects.get( course_category=CourseCategory.objects.get(
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, title=category_name course_id=course.id, title=category_name
), ),
title_hidden=title_hidden, title_hidden=title_hidden,
) )
@ -1288,11 +1314,22 @@ def create_standard_learning_unit(
content_url=wbt_url, content_url=wbt_url,
) )
competence_page = CompetencePage.objects.get(competence_id=competence_id) competence_pages = CompetencePage.objects.filter(competence_id=competence_id)
course_page = CoursePage.objects.get(course=course)
# As the competences have all the same name, we need to pick the correct one
course_cp = None
for cp in competence_pages:
if cp.get_parent().get_parent().id == course_page.id:
course_cp = cp
break
else:
return
PerformanceCriteriaFactory( PerformanceCriteriaFactory(
parent=competence_page, parent=course_cp,
competence_id=f"{competence_id}.{category_name}", competence_id=f"{competence_id}.{category_name}",
title=f"Ich bin fähig bei {category_name} eine {competence_page.title} zu machen", title=f"Ich bin fähig bei {category_name} eine {course_cp.title} zu machen",
learning_unit=lu, learning_unit=lu,
) )