diff --git a/server/vbv_lernwelt/course/consts.py b/server/vbv_lernwelt/course/consts.py index bfd0a3bc..5b3b30ab 100644 --- a/server/vbv_lernwelt/course/consts.py +++ b/server/vbv_lernwelt/course/consts.py @@ -6,3 +6,5 @@ COURSE_UK_TRAINING = -6 COURSE_UK_TRAINING_FR = -7 COURSE_UK_IT = -8 COURSE_UK_TRAINING_IT = -9 +COURSE_VERSICHERUNGSVERMITTLERIN_FR_ID = -10 +COURSE_VERSICHERUNGSVERMITTLERIN_IT_ID = -11 diff --git a/server/vbv_lernwelt/course/management/commands/create_default_courses.py b/server/vbv_lernwelt/course/management/commands/create_default_courses.py index 39afa90f..dca45990 100644 --- a/server/vbv_lernwelt/course/management/commands/create_default_courses.py +++ b/server/vbv_lernwelt/course/management/commands/create_default_courses.py @@ -51,7 +51,9 @@ from vbv_lernwelt.course.consts import ( 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_test_course from vbv_lernwelt.course.creators.uk_course import ( @@ -107,6 +109,8 @@ ADMIN_EMAILS = ["info@iterativ.ch", "admin"] 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, @@ -120,6 +124,11 @@ def command(course): 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_UK in course: create_course_uk_de() create_course_uk_de_course_sessions() @@ -153,11 +162,18 @@ def command(course): 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 d’assurance", + "it": "Intermediario/a assicurativo/a", + } # Versicherungsvermittler/in mit neuen Circles course = create_versicherungsvermittlerin_with_categories( - course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, - title="Versicherungsvermittler/-in", + course_id=course_id, + title=names[language], ) # assignments create assignments parent page @@ -165,62 +181,61 @@ def create_versicherungsvermittlerin_course(): parent=course.coursepage, ) - create_vv_new_competence_profile(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID) - create_default_media_library(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID) - create_vv_einkommenssicherung_casework( - course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID - ) - create_vv_gesundheit_casework(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID) - create_vv_gewinnen_casework(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID) - create_vv_reflection(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID) - create_vv_new_learning_path() + 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_VERSICHERUNGSVERMITTLERIN_ID, - title="Versicherungsvermittler/-in", - ) - for user_data in default_users: - CourseSessionUser.objects.create( + 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=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( - 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( + expert2 = CourseSessionUser.objects.create( 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"): names = { diff --git a/server/vbv_lernwelt/learnpath/create_vv_new_learning_path.py b/server/vbv_lernwelt/learnpath/create_vv_new_learning_path.py index 3b530440..683461f1 100644 --- a/server/vbv_lernwelt/learnpath/create_vv_new_learning_path.py +++ b/server/vbv_lernwelt/learnpath/create_vv_new_learning_path.py @@ -110,7 +110,7 @@ def create_circle_basis(lp, title="Basis"): LearningContentPlaceholderFactory( title="Mediathek", parent=circle, - content_url="/course/versicherungsvermittler-in/media", + content_url=f"/course/{circle.get_course().slug}/media", ) LearningContentPlaceholderFactory( title="Qualifikationsprofil und Zulassungsprüfung", @@ -227,7 +227,7 @@ def create_circle_gewinnen(lp, title="Gewinnen"): LearningContentPlaceholderFactory( title="Mediathek", parent=circle, - content_url="/course/versicherungsvermittler-in/media", + content_url=f"/course/{course_slug}/media", ) LearningContentPlaceholderFactory( title="Die ersten Schritte im Verkauf", @@ -251,7 +251,7 @@ def create_circle_gewinnen(lp, title="Gewinnen"): LearningContentPlaceholderFactory( title="Mediathek", parent=circle, - content_url="/course/versicherungsvermittler-in/media", + content_url=f"/course/{course_slug}/media", ) LearningContentPlaceholderFactory( title="Vom Lead zum Termin/Telefon auf Empfehlung/Neukundengewinnung", @@ -276,7 +276,7 @@ def create_circle_gewinnen(lp, title="Gewinnen"): assignment_type="REFLECTION", parent=circle, content_assignment=Assignment.objects.get( - slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" + slug__startswith=f"{course_slug}-assignment-reflexion" ), ), LearningContentFeedbackFactory( @@ -300,7 +300,7 @@ def create_circle_fahrzeug(lp, title="Fahrzeug"): LearningContentMediaLibraryFactory( title=f"Mediathek {title}", 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) @@ -308,6 +308,7 @@ def create_circle_fahrzeug(lp, title="Fahrzeug"): "Rafael Fasel wechselt sein Auto - Einstieg", parent=circle, category_name="Fahrzeug", + course=circle.get_course(), competence_id="V1", 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", @@ -318,6 +319,7 @@ def create_circle_fahrzeug(lp, title="Fahrzeug"): "Rafael Fasel wechselt sein Auto - Analyse", parent=circle, category_name="Fahrzeug", + course=circle.get_course(), competence_id="V2", 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", @@ -328,6 +330,7 @@ def create_circle_fahrzeug(lp, title="Fahrzeug"): "Rafael Fasel wechselt sein Auto - Lösung", parent=circle, category_name="Fahrzeug", + course=circle.get_course(), competence_id="V3", 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", @@ -338,6 +341,7 @@ def create_circle_fahrzeug(lp, title="Fahrzeug"): "Rafael Fasel wechselt sein Auto - Abschluss", parent=circle, category_name="Fahrzeug", + course=circle.get_course(), competence_id="V4", 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", @@ -363,7 +367,7 @@ def create_circle_fahrzeug(lp, title="Fahrzeug"): assignment_type="REFLECTION", parent=circle, content_assignment=Assignment.objects.get( - slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" + slug__startswith=f"{circle.get_course().slug}-assignment-reflexion" ), ), LearningContentFeedbackFactory( @@ -387,7 +391,7 @@ def create_circle_haushalt(lp, title="Haushalt"): LearningContentMediaLibraryFactory( title=f"Mediathek {title}", 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) @@ -395,6 +399,7 @@ def create_circle_haushalt(lp, title="Haushalt"): "Rafael und Claudia ziehen zusammen - Einstieg", parent=circle, category_name="Haushalt", + course=circle.get_course(), 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", learning_unit_title="Gesprächsvorbereitung und -einstieg", @@ -405,6 +410,7 @@ def create_circle_haushalt(lp, title="Haushalt"): "Rafael und Claudia ziehen zusammen - Analyse", parent=circle, category_name="Haushalt", + course=circle.get_course(), 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", 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", parent=circle, category_name="Haushalt", + course=circle.get_course(), 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", 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", parent=circle, category_name="Haushalt", + course=circle.get_course(), 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", learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung", @@ -449,7 +457,7 @@ def create_circle_rechtsstreitigkeiten(lp, title="Rechtsstreitigkeiten"): LearningContentMediaLibraryFactory( title=f"Mediathek {title}", 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) @@ -457,6 +465,7 @@ def create_circle_rechtsstreitigkeiten(lp, title="Rechtsstreitigkeiten"): "Rafael Fasel hat Ärger mit seinem Vermieter", parent=circle, category_name=title, + course=circle.get_course(), 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", learning_unit_title="Terminvereinbarung, Vorbereitung und Gesprächseröffnung", @@ -482,7 +491,7 @@ def create_circle_reisen(lp, title="Reisen"): LearningContentMediaLibraryFactory( title=f"Mediathek {title}", 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) @@ -490,6 +499,7 @@ def create_circle_reisen(lp, title="Reisen"): "Emma und Ayla campen durch Amerika - Einstieg", parent=circle, category_name=title, + course=circle.get_course(), 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", 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", parent=circle, category_name=title, + course=circle.get_course(), 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", 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", parent=circle, category_name=title, + course=circle.get_course(), 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", 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", parent=circle, category_name=title, + course=circle.get_course(), 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", learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung", @@ -540,7 +553,7 @@ def create_circle_reisen(lp, title="Reisen"): assignment_type="REFLECTION", parent=circle, content_assignment=Assignment.objects.get( - slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" + slug__startswith=f"{circle.get_course().slug}-assignment-reflexion" ), ), LearningContentFeedbackFactory( @@ -565,7 +578,7 @@ def create_circle_einkommenssicherung(lp, title="Einkommenssicherung"): LearningContentMediaLibraryFactory( title=f"Mediathek {title}", 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) @@ -573,6 +586,7 @@ def create_circle_einkommenssicherung(lp, title="Einkommenssicherung"): "Patrizia und Marco sichern sich ab - Einstieg", parent=circle, category_name=title, + course=circle.get_course(), competence_id="V1", 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", @@ -583,9 +597,10 @@ def create_circle_einkommenssicherung(lp, title="Einkommenssicherung"): "Patrizia und Marco sichern sich ab - Analyse", parent=circle, category_name=title, - competence_id="V2", - wbt_url="https://courses.my.vbv-afa.ch/courses/de-ek-02-patrizia-marco-sichern-sich-ab-analyse.zip/index.html", - learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation", + course=circle.get_course(), + competence_id="V1", + 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) @@ -593,9 +608,10 @@ def create_circle_einkommenssicherung(lp, title="Einkommenssicherung"): "Patrizia und Marco sichern sich ab - Lösung", parent=circle, category_name=title, - competence_id="V3", - wbt_url="https://courses.my.vbv-afa.ch/courses/de-ek-03-patrizia-marco-sichern-sich-ab-losung.zip/index.html", - learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren", + course=circle.get_course(), + competence_id="V1", + 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) @@ -603,6 +619,7 @@ def create_circle_einkommenssicherung(lp, title="Einkommenssicherung"): "Patrizia und Marco sichern sich ab - Abschluss", parent=circle, category_name=title, + course=circle.get_course(), competence_id="V4", 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", @@ -629,7 +646,7 @@ def create_circle_einkommenssicherung(lp, title="Einkommenssicherung"): assignment_type="REFLECTION", parent=circle, content_assignment=Assignment.objects.get( - slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" + slug__startswith=f"{circle.get_course().slug}-assignment-reflexion" ), ), LearningContentFeedbackFactory( @@ -653,7 +670,7 @@ def create_circle_wohneigentum(lp, title="Wohneigentum"): LearningContentMediaLibraryFactory( title=f"Mediathek {title}", 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) @@ -682,7 +699,7 @@ def create_circle_wohneigentum(lp, title="Wohneigentum"): assignment_type="REFLECTION", parent=circle, content_assignment=Assignment.objects.get( - slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" + slug__startswith=f"{circle.get_course().slug}-assignment-reflexion" ), ), LearningContentFeedbackFactory( @@ -706,7 +723,7 @@ def create_circle_pensionierung(lp, title="Pensionierung"): LearningContentMediaLibraryFactory( title=f"Mediathek {title}", 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) @@ -714,6 +731,7 @@ def create_circle_pensionierung(lp, title="Pensionierung"): "Giulia und Davide planen ihre Pensionierung - Einstieg", parent=circle, category_name=title, + course=circle.get_course(), 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", 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", parent=circle, category_name=title, + course=circle.get_course(), 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", 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", parent=circle, category_name=title, + course=circle.get_course(), 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", 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", parent=circle, category_name=title, + course=circle.get_course(), 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", learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung", @@ -760,7 +781,7 @@ def create_circle_pensionierung(lp, title="Pensionierung"): assignment_type="REFLECTION", parent=circle, content_assignment=Assignment.objects.get( - slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" + slug__startswith=f"{circle.get_course().slug}-assignment-reflexion" ), ), LearningContentFeedbackFactory( @@ -784,7 +805,7 @@ def create_circle_erben(lp, title="Erben/Vererben"): LearningContentMediaLibraryFactory( title=f"Mediathek {title}", 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) @@ -794,7 +815,7 @@ def create_circle_erben(lp, title="Erben/Vererben"): parent=circle, ) LearningContentPlaceholderFactory( - title=f"Guilia udn Davide machen sich Gedanken", + title=f"Guilia und Davide machen sich Gedanken", parent=circle, ) LearningContentPlaceholderFactory( @@ -817,7 +838,7 @@ def create_circle_erben(lp, title="Erben/Vererben"): assignment_type="REFLECTION", parent=circle, content_assignment=Assignment.objects.get( - slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" + slug__startswith=f"{circle.get_course().slug}-assignment-reflexion" ), ), LearningContentFeedbackFactory( @@ -843,7 +864,7 @@ def create_circle_gesundheit(lp, title="Gesundheit"): LearningContentMediaLibraryFactory( title=f"Mediathek {title}", 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) @@ -851,6 +872,7 @@ def create_circle_gesundheit(lp, title="Gesundheit"): "Familie Babic erwartet Nachwuchs - Einstieg", parent=circle, category_name=title, + course=circle.get_course(), competence_id="V1", 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", @@ -861,6 +883,7 @@ def create_circle_gesundheit(lp, title="Gesundheit"): "Familie Babic erwartet Nachwuchs - Analyse", parent=circle, category_name=title, + course=circle.get_course(), competence_id="V2", 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", @@ -871,6 +894,7 @@ def create_circle_gesundheit(lp, title="Gesundheit"): "Familie Babic erwartet Nachwuchs - Lösung", parent=circle, category_name=title, + course=circle.get_course(), competence_id="V3", 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", @@ -881,6 +905,7 @@ def create_circle_gesundheit(lp, title="Gesundheit"): "Familie Babic erwartet Nachwuchs - Abschluss", parent=circle, category_name=title, + course=circle.get_course(), competence_id="V4", 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", @@ -903,7 +928,7 @@ def create_circle_gesundheit(lp, title="Gesundheit"): assignment_type="REFLECTION", parent=circle, content_assignment=Assignment.objects.get( - slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" + slug__startswith=f"{circle.get_course().slug}-assignment-reflexion" ), ), LearningContentFeedbackFactory( @@ -927,7 +952,7 @@ def create_circle_sparen(lp, title="Sparen"): LearningContentMediaLibraryFactory( title="Mediathek", 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) @@ -962,7 +987,7 @@ def create_circle_selbstaendigkeit(lp, title="Selbstständigkeit"): LearningContentMediaLibraryFactory( title="Mediathek", 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) @@ -995,7 +1020,7 @@ def create_circle_kmu(lp, title="KMU"): LearningContentMediaLibraryFactory( title=f"Mediathek {title}", 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) @@ -1069,7 +1094,7 @@ def create_circle_standard_small( LearningContentMediaLibraryFactory( title=f"Mediathek {title}", 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: @@ -1187,7 +1212,7 @@ def create_circle_pruefungsvorbereitung(lp, title="Prüfungsvorbereitung"): LearningContentPlaceholderFactory( title="Mediathek", parent=circle, - content_url="/course/versicherungsvermittler-in/media", + content_url=f"/course/{circle.get_course().slug}/media", ) LearningSequenceFactory(title="Aufbau", parent=circle) @@ -1258,6 +1283,7 @@ def create_standard_learning_unit( title, parent, category_name, + course, competence_id="V1", wbt_url=None, check_url=None, @@ -1271,7 +1297,7 @@ def create_standard_learning_unit( title=learning_unit_title, parent=parent, course_category=CourseCategory.objects.get( - course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, title=category_name + course_id=course.id, title=category_name ), title_hidden=title_hidden, ) @@ -1288,11 +1314,22 @@ def create_standard_learning_unit( 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( - parent=competence_page, + parent=course_cp, 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, )