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"
},
"general": {
"back": "zurück",
"backCapitalized": "@.capitalize:general.back",
"back": "capit",
"backCapitalized": "Zurück",
"backToCircle": "zurück zum Circle",
"backToLearningPath": "zurück zum Lernpfad",
"certificate_one": "Zertifikat",
@ -210,6 +210,8 @@
},
"login": {
"demoLogin": "Demo Login",
"guidelineFile": "Registrierung _myVBV.pptx",
"guidelineText": "Erfahre wie du dich als üK-Lernende/r registrieren kannst",
"login": "Login",
"ssoLogin": "SSO Login/Registration",
"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") }}
<br />
{{ $t("uk.contact.address") }}
<br />
<a href="mailto:uek-support@vbv-afa.ch">uk.contact.email</a>
</p>
</address>
</div>

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -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

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")
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(
title="Réflexion",
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")
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(
title="Reflexion",
assignment_type="REFLECTION",

View File

@ -4,6 +4,7 @@ from datetime import datetime, timedelta
import djclick as click
from dateutil.relativedelta import MO, relativedelta, TH, TU
from django.conf import settings
from django.utils import timezone
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_fahrzeug_casework,
create_uk_fahrzeug_prep_assignment,
create_uk_fr_basis_prep_assignment,
create_uk_fr_fahrzeug_casework,
create_uk_fr_fahrzeug_prep_assignment,
create_uk_fr_kickoff_prep_assignment,
create_uk_fr_reflection,
create_uk_it_basis_prep_assignment,
create_uk_it_fahrzeug_casework,
create_uk_it_fahrzeug_prep_assignment,
create_uk_it_kickoff_prep_assignment,
create_uk_it_reflection,
create_uk_kickoff_prep_assignment,
create_uk_reflection,
@ -51,7 +56,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 +114,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,17 +129,22 @@ 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()
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(
assignment=Assignment.objects.get(
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"),
)
@ -153,11 +167,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 dassurance",
"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 +186,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 = {
@ -254,7 +274,7 @@ def create_course_uk_de_course_sessions():
cs = CourseSession.objects.create(
course_id=COURSE_UK,
title="Bern 2023 a",
title="Demo üK 2023 DE",
)
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
)
# 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
@ -416,6 +403,10 @@ def create_course_uk_fr():
_assignment_list_page = AssignmentListPageFactory(
parent=course.coursepage,
)
create_uk_condition_acceptance(course_id=COURSE_UK_FR)
create_uk_fr_kickoff_prep_assignment(course_id=COURSE_UK_FR)
create_uk_fr_basis_prep_assignment(course_id=COURSE_UK_FR)
create_uk_fr_fahrzeug_casework(course_id=COURSE_UK_FR)
create_uk_fr_fahrzeug_prep_assignment(course_id=COURSE_UK_FR)
create_uk_fr_reflection(course_id=COURSE_UK_FR)
@ -425,7 +416,7 @@ def create_course_uk_fr():
cs = CourseSession.objects.create(
course_id=COURSE_UK_FR,
title="Cours interentreprises année 1 - Région Fribourg",
title="Demo ci 2023 FR",
)
csu = CourseSessionUser.objects.create(
@ -462,6 +453,9 @@ def create_course_uk_it():
_assignment_list_page = AssignmentListPageFactory(
parent=course.coursepage,
)
create_uk_condition_acceptance(course_id=COURSE_UK_IT)
create_uk_it_kickoff_prep_assignment(course_id=COURSE_UK_IT)
create_uk_it_basis_prep_assignment(course_id=COURSE_UK_IT)
create_uk_it_fahrzeug_casework(course_id=COURSE_UK_IT)
create_uk_it_fahrzeug_prep_assignment(course_id=COURSE_UK_IT)
create_uk_it_reflection(course_id=COURSE_UK_IT)
@ -469,10 +463,11 @@ def create_course_uk_it():
create_uk_it_competence_profile(course_id=COURSE_UK_IT)
create_default_media_library(course_id=COURSE_UK_IT)
_cs = CourseSession.objects.create(
course_id=COURSE_UK_IT,
title="Corso interaziendale Ticino",
)
if settings.APP_ENVIRONMENT != "production":
_cs = CourseSession.objects.create(
course_id=COURSE_UK_IT,
title="Demo ci 2023 IT",
)
def create_course_uk_de_assignment_completion_data(assignment, course_session, user):
@ -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:
csu, _created = CourseSessionUser.objects.get_or_create(
@ -706,7 +701,7 @@ def create_course_training_fr():
cs = CourseSession.objects.get(
course_id=COURSE_UK_FR,
title="Cours interentreprises année 1 - Région Fribourg",
title="Demo ci 2023 FR",
)
for user in users:
@ -793,7 +788,7 @@ def create_course_training_it():
cs = CourseSession.objects.get(
course_id=COURSE_UK_IT,
title="Corso interaziendale Ticino",
title="Demo ci 2023 IT",
)
for user in users:

View File

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

View File

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

View File

@ -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,
)