vbv/server/vbv_lernwelt/learnpath/create_vv_new_learning_path.py

1067 lines
38 KiB
Python

import wagtail_factories
from django.conf import settings
from django.core.management import call_command
from slugify import slugify
from wagtail.models import Locale, Page, Site
from wagtail.rich_text import RichText
from wagtail_localize.models import LocaleSynchronization
from vbv_lernwelt.competence.factories import PerformanceCriteriaFactory
from vbv_lernwelt.competence.models import CompetencePage
from vbv_lernwelt.core.admin import User
from vbv_lernwelt.course.consts import COURSE_VERSICHERUNGSVERMITTLERIN_ID
from vbv_lernwelt.course.models import CourseCategory, CoursePage
from vbv_lernwelt.learnpath.tests.learning_path_factories import (
CircleFactory,
LearningContentFeedbackFactory,
LearningContentLearningModuleFactory,
LearningContentMediaLibraryFactory,
LearningContentPlaceholderFactory,
LearningContentRichTextFactory,
LearningContentTestFactory,
LearningContentVideoFactory,
LearningPathFactory,
LearningSequenceFactory,
LearningUnitFactory,
TopicFactory,
)
from vbv_lernwelt.learnpath.vv_circle_goals import GoalsType, VV_CIRCLE_GOALS
# todo: remove when all Handlungsfelder are ready
READY_HF = ["Fahrzeug", "Reisen"]
def create_vv_new_learning_path(
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, user=None, skip_locales=True
):
if user is None:
user = User.objects.get(username="info@iterativ.ch")
site = Site.objects.filter(is_default_site=True).first()
if not site:
site = wagtail_factories.SiteFactory(is_default_site=True)
if settings.APP_ENVIRONMENT == "development":
site.port = 8000
site.save()
course_page = CoursePage.objects.get(course_id=course_id)
lp = LearningPathFactory(
title="Lernpfad",
parent=course_page,
)
TopicFactory(title="Basis", is_visible=False, parent=lp)
create_circle_basis(lp)
TopicFactory(title="Gewinnen von Kunden", parent=lp)
create_circle_gewinnen(lp)
TopicFactory(title="Beraten und Betreuen von Kunden", parent=lp)
create_circle_fahrzeug(lp)
create_circle_standard(
lp, title="Haushalt", lc_title="Rafael und Claudia ziehen zusammen"
)
create_circle_rechtsstreitigkeiten(lp)
create_circle_reisen(lp)
create_circle_einkommenssicherung(lp)
create_circle_standard_small(
lp,
title="Wohneigentum",
lc_title="Patrizia und Marco kaufen ein Haus",
lu_title="Immobilien versichern bei Kauf und Umbau",
lc_praxis_title="Wohneigentum (Bauen)",
)
create_circle_standard(
lp,
title="Pensionierung",
lc_title="Giulia und Davide planen ihre Pensionierung",
)
create_circle_standard_small(
lp,
title="Erben / Vererben",
lc_title="Giulia und Davide machen sich Gedanken ???",
lu_title="Gesetzliche Erben, Pflichtteile, Testament",
lc_praxis_title="Giluia und Davide vererben ihr Haus",
)
create_circle_standard(
lp,
title="Gesundheit",
lc_title="Familie Babic erwartet Nachwuchs",
)
create_circle_standard_small(
lp,
title="Sparen",
description=VV_CIRCLE_GOALS["sparen"]["description"],
lc_title="Familie Babic spart auf ein Ziel",
lu_title="Sparinstrumente, Idee und Funktionsweise von Anlagefonds",
goals=VV_CIRCLE_GOALS["sparen"]["goals"],
)
create_circle_standard_small(
lp,
title="Selbstständigkeit",
description=VV_CIRCLE_GOALS["selbstständigkeit"]["description"],
lc_title="Patrizia macht sich selbstständig",
lu_title="Selbstständigerwerbende versichern",
goals=VV_CIRCLE_GOALS["selbstständigkeit"]["goals"],
)
create_circle_standard(
lp,
title="KMU",
description=VV_CIRCLE_GOALS["kmu"]["description"],
lc_title="Anne Fleur übernimmt den Blumenladen",
goals=VV_CIRCLE_GOALS["kmu"]["goals"],
)
TopicFactory(title="Prüfung", parent=lp)
create_circle_pruefungsvorbereitung(lp)
create_circle_pruefung(lp)
# locales
if not skip_locales:
locale_de = Locale.objects.get(language_code="de-CH")
locale_fr, _ = Locale.objects.get_or_create(language_code="fr-CH")
LocaleSynchronization.objects.get_or_create(
locale_id=locale_fr.id, sync_from_id=locale_de.id
)
locale_it, _ = Locale.objects.get_or_create(language_code="it-CH")
LocaleSynchronization.objects.get_or_create(
locale_id=locale_it.id, sync_from_id=locale_de.id
)
call_command("sync_locale_trees")
# all pages belong to 'admin' by default
Page.objects.update(owner=user)
def create_circle_basis(lp, title="Basis"):
circle = CircleFactory(
title=title,
parent=lp,
description=VV_CIRCLE_GOALS["basis"]["description"],
)
LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
LearningUnitFactory(title="Einführung", parent=circle)
LearningContentVideoFactory(
title="Verschaff dir einen Überblick",
parent=circle,
content_url="https://player.vimeo.com/video/772512710?h=30f912f15a",
description="Willkommen im Lehrgang Versicherungsvermitler VBV",
)
LearningContentPlaceholderFactory(
title="Aufbau myVBV",
parent=circle,
)
LearningSequenceFactory(title="Lernreise", parent=circle)
LearningUnitFactory(
title="Lerntechnik, Lernbegleitung, Lernpartner/-in und Einführung in MyVBV",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Mediathek",
parent=circle,
content_url="/course/versicherungsvermittler-in/media",
)
LearningContentPlaceholderFactory(
title="Qualifikationsprofil und Zulassungsprüfung",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Lege dir eine Lernstrategie zurecht",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Such dir eine/n Lernbegleiter/-in, einen Lern-Buddy und plane deine Lernzeiten",
parent=circle,
)
LearningSequenceFactory(title="Arbeitsalltag", parent=circle)
LearningUnitFactory(
title="Mein neuer Job, Arbeitstechnik, Soziale Medien, Datenschutz und Beratungspflichten",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Mediathek",
parent=circle,
content_url="/course/versicherungsvermittler-in/media",
)
LearningContentPlaceholderFactory(
title="Mein neuer Job",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Organisiere deinen Arbeitsalltag",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Soziale Medien und Datenschutz",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Beraterpflichten (inkl. VBV-WBT)",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Fachcheck Beraterpflichten",
parent=circle,
)
LearningSequenceFactory(title="Basiswissen", parent=circle)
LearningUnitFactory(
title="Basiswissen Versicherungen, VVG",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Mediathek",
parent=circle,
content_url="/course/versicherungsvermittler-in/media",
)
LearningContentPlaceholderFactory(
title="Einstieg in die Versicherung",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Basiswissen Versicherungen (inkl. VBV-WBT)",
parent=circle,
)
LearningContentPlaceholderFactory(
title="VVG im Versicherungsalltag (inkl. VBV-WBT)",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Fachcheck Versicherungswirtschaft",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Fachcheck Versicherungsrecht",
parent=circle,
)
LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
LearningUnitFactory(title="Reflexion, Feedback", parent=circle)
LearningContentPlaceholderFactory(
title="Reflexion",
parent=circle,
)
LearningContentFeedbackFactory(
parent=circle,
)
def create_circle_gewinnen(lp, title="Gewinnen"):
circle = CircleFactory(
title=title,
parent=lp,
description="""
Neue Kunden zu gewinnen ist ein wesentlicher Bestandteil deiner beruflichen Tätigkeit.
Dies sichert dir langfristig deine finanzielle Basis. Dieser Circle fokussiert darauf,
wie du dein Netzwerk aufbauen und erweitern kannst, um damit neue Kunden zu gewinnen.
""".strip(),
goals=[
("goal", "Weiterempfehlungen generieren"),
("goal", "Leads generieren"),
("goal", "Neue Kunden gewinnen"),
("goal", "Soziale Medien pflegen"),
],
)
LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
LearningUnitFactory(title="Einführung", parent=circle)
LearningContentPlaceholderFactory(
title="Verschaff dir einen Überblick",
parent=circle,
)
LearningSequenceFactory(title="Verkaufsgrundlagen", parent=circle)
LearningUnitFactory(title="Verkaufsgrundlagen", parent=circle)
LearningContentPlaceholderFactory(
title="Mediathek",
parent=circle,
content_url="/course/versicherungsvermittler-in/media",
)
LearningContentPlaceholderFactory(
title="Die ersten Schritte im Verkauf",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Sich und das Unternehmen vorstellen",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Fachcheck Verkaufsgrundlagen",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Selbsteinschätzung",
parent=circle,
)
LearningSequenceFactory(title="Kundenakquise", parent=circle)
LearningUnitFactory(title="Kundenakquise", parent=circle)
LearningContentPlaceholderFactory(
title="Mediathek",
parent=circle,
content_url="/course/versicherungsvermittler-in/media",
)
LearningContentPlaceholderFactory(
title="Vom Lead zum Termin/Telefon auf Empfehlung/Neukundengewinnung",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Mein Kundenstamm",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Selbsteinschätzung",
parent=circle,
)
LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
LearningUnitFactory(title="Reflexion, Feedback", parent=circle)
LearningContentPlaceholderFactory(
title="Reflexion",
parent=circle,
)
LearningContentFeedbackFactory(
parent=circle,
)
def create_circle_fahrzeug(lp, title="Fahrzeug"):
circle = CircleFactory(
title=title,
parent=lp,
)
LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
LearningUnitFactory(title="Einführung", parent=circle)
LearningContentVideoFactory(
title="Verschaff dir einen Überblick",
parent=circle,
content_url="https://player.vimeo.com/video/772512710?h=30f912f15a",
description="Willkommen im Lehrgang Versicherungsvermitler VBV",
)
LearningContentMediaLibraryFactory(
title=f"Mediathek {title}",
parent=circle,
content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
)
LearningSequenceFactory(title="Einstieg", parent=circle)
create_standard_learning_unit(
"Rafael Fasel wechselt sein Auto - Einstieg",
parent=circle,
category_name="Fahrzeug",
competence_id="V1",
wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/rafael-fasel-wechselt-sein-auto-einstieg-xapi-L3QlrrCt/index.html",
learning_unit_title="Gesprächsvorbereitung und -einstieg",
)
LearningSequenceFactory(title="Analyse", parent=circle)
create_standard_learning_unit(
"Rafael Fasel wechselt sein Auto - Analyse",
parent=circle,
category_name="Fahrzeug",
competence_id="V2",
wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/rafael-fasel-wechselt-sein-auto-analyse-xapi-YtviM_SF/index.html",
learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation",
)
LearningSequenceFactory(title="Lösung", parent=circle)
create_standard_learning_unit(
"Rafael Fasel wechselt sein Auto - Lösung",
parent=circle,
category_name="Fahrzeug",
competence_id="V3",
wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/rafael-fasel-wechselt-sein-auto-losung-xapi-jTdlOjOF/index.html",
learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren",
)
LearningSequenceFactory(title="Abschluss", parent=circle)
create_standard_learning_unit(
"Rafael Fasel wechselt sein Auto - Abschluss",
parent=circle,
category_name="Fahrzeug",
competence_id="V4",
wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/rafael-fasel-wechselt-sein-auto-abschluss-xapi-OBWheB8q/index.html",
learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung",
)
LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
LearningUnitFactory(title="Reflexion, Feedback", parent=circle)
LearningContentTestFactory(
title=f"Fachcheck",
parent=circle,
content_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/fach-check-fahrzeug-xapi-LqpAWv1J/index.html",
)
LearningContentPlaceholderFactory(
title="Reflexion",
parent=circle,
)
LearningContentFeedbackFactory(
parent=circle,
)
def create_circle_rechtsstreitigkeiten(lp, title="Rechtsstreitigkeiten"):
circle = CircleFactory(
title=title,
parent=lp,
)
LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
LearningUnitFactory(title="Einführung", parent=circle)
LearningContentVideoFactory(
title="Verschaff dir einen Überblick",
parent=circle,
content_url="https://player.vimeo.com/video/772512710?h=30f912f15a",
description="Willkommen im Lehrgang Versicherungsvermitler VBV",
)
LearningContentMediaLibraryFactory(
title=f"Mediathek {title}",
parent=circle,
content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
)
LearningSequenceFactory(title="Rechtsstreitigkeiten", parent=circle)
create_standard_learning_unit(
"Rafael Fasel hat Ärger mit seinem Vermieter",
parent=circle,
category_name=title,
competence_id="V1",
wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/rafael-fasel-hat-arger-mit-seinem-vermieter-xapi-qI-Aqj8O/index.html",
learning_unit_title="Terminvereinbarung, Vorbereitung und Gesprächseröffnung",
)
create_learning_sequence_transfer(circle, title="Rechtsstreitigkeiten")
def create_circle_reisen(lp, title="Reisen"):
circle = CircleFactory(
title=title,
parent=lp,
)
LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
LearningUnitFactory(title="Einführung", parent=circle)
LearningContentVideoFactory(
title="Verschaff dir einen Überblick",
parent=circle,
content_url="https://player.vimeo.com/video/772512710?h=30f912f15a",
description="Willkommen im Lehrgang Versicherungsvermitler VBV",
)
LearningContentMediaLibraryFactory(
title=f"Mediathek {title}",
parent=circle,
content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
)
LearningSequenceFactory(title="Einstieg", parent=circle)
create_standard_learning_unit(
"Emma und Ayla campen durch Amerika - Einstieg",
parent=circle,
category_name=title,
competence_id="V1",
wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/emma-und-ayla-campen-durch-amerika-einstieg-xapi-UnxjqXFB/index.html",
learning_unit_title="Terminvereinbarung, Vorbereitung und Gesprächseröffnung",
)
LearningSequenceFactory(title="Analyse", parent=circle)
create_standard_learning_unit(
"Emma und Ayla campen durch Amerika - Analyse",
parent=circle,
category_name=title,
competence_id="V2",
wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/emma-und-ayla-campen-durch-amerika-analyse-xapi-FZoZOP9y/index.html",
learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation",
)
LearningSequenceFactory(title="Lösung", parent=circle)
create_standard_learning_unit(
"Emma und Ayla campen durch Amerika - Lösung",
parent=circle,
category_name=title,
competence_id="V3",
wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/emma-und-ayla-campen-durch-amerika-losung-xapi-DK5AsZ5M/index.html",
learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren",
)
LearningSequenceFactory(title="Abschluss", parent=circle)
create_standard_learning_unit(
"Emma und Ayla campen durch Amerika - Abschluss",
parent=circle,
category_name=title,
competence_id="V4",
wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/emma-und-ayla-campen-durch-amerika-abschluss-xapi--4t5XKAf/index.html",
learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung",
)
create_learning_sequence_transfer(
circle, title="Reisen", lc_praxis_title="Auswandern: Woran muss ich denken?"
)
def create_circle_einkommenssicherung(lp, title="Einkommenssicherung"):
circle = CircleFactory(
title=title,
parent=lp,
)
LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
LearningUnitFactory(title="Einführung", parent=circle)
LearningContentVideoFactory(
title="Verschaff dir einen Überblick",
parent=circle,
content_url="https://player.vimeo.com/video/772512710?h=30f912f15a",
description="Willkommen im Lehrgang Versicherungsvermitler VBV",
)
LearningContentMediaLibraryFactory(
title=f"Mediathek {title}",
parent=circle,
content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
)
LearningSequenceFactory(title="Einstieg", parent=circle)
create_standard_learning_unit(
"Patrizia und Marco sichern sich ab - Einstieg",
parent=circle,
category_name=title,
competence_id="V1",
wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/patrizia-marco-sichern-sich-ab-einstieg-xapi-jkH97GgC/index.html",
learning_unit_title="Terminvereinbarung, Vorbereitung und Gesprächseröffnung",
)
LearningSequenceFactory(title="Analyse", parent=circle)
create_standard_learning_unit(
"Patrizia und Marco sichern sich ab - Analyse",
parent=circle,
category_name=title,
competence_id="V2",
wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/patrizia-marco-sichern-sich-ab-analyse-xapi-MGcooCtm/index.html",
learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation",
)
LearningSequenceFactory(title="Lösung", parent=circle)
create_standard_learning_unit(
"Patrizia und Marco sichern sich ab - Lösung",
parent=circle,
category_name=title,
competence_id="V3",
wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/patrizia-marco-sichern-sich-ab-losung-xapi-nzoOdKIE/index.html",
learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren",
)
LearningSequenceFactory(title="Abschluss", parent=circle)
create_standard_learning_unit(
"Patrizia und Marco sichern sich ab - Abschluss",
parent=circle,
category_name=title,
competence_id="V4",
wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/patrizia-marco-sichern-sich-ab-abschluss-xapi--lXKe6xt/index.html",
learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung",
)
create_learning_sequence_transfer(
circle, title="Einkommenssicherung", lc_praxis_title="Heirat: Was ändert sich?"
)
def create_circle_standard_small(
lp,
title,
lc_title,
lu_title=None,
lc_praxis_title=None,
goals=None,
description=None,
):
circle = CircleFactory(**setup_circle_factory_kwargs(title, lp, goals, description))
LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
LearningUnitFactory(title="Einführung", parent=circle)
LearningContentVideoFactory(
title="Verschaff dir einen Überblick",
parent=circle,
content_url="https://player.vimeo.com/video/772512710?h=30f912f15a",
description="Willkommen im Lehrgang Versicherungsvermitler VBV",
)
LearningContentMediaLibraryFactory(
title=f"Mediathek {title}",
parent=circle,
content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title, allow_unicode=True)}",
)
if lu_title is None:
lu_title = title
LearningSequenceFactory(title=title, parent=circle)
create_standard_learning_unit(
lc_title,
parent=circle,
category_name=title,
competence_id="V1",
learning_unit_title=lu_title,
)
create_learning_sequence_transfer(circle, title, lc_praxis_title=lc_praxis_title)
def create_circle_standard(lp, title, lc_title, goals=None, description=None):
circle = CircleFactory(**setup_circle_factory_kwargs(title, lp, goals, description))
LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
LearningUnitFactory(title="Einführung", parent=circle)
LearningContentVideoFactory(
title="Verschaff dir einen Überblick",
parent=circle,
content_url="https://player.vimeo.com/video/772512710?h=30f912f15a",
description="Willkommen im Lehrgang Versicherungsvermitler VBV",
)
LearningContentMediaLibraryFactory(
title=f"Mediathek {title}",
parent=circle,
content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
)
LearningSequenceFactory(title="Einstieg", parent=circle)
create_standard_learning_unit(
f"{lc_title} - Einstieg",
parent=circle,
category_name=title,
competence_id="V1",
learning_unit_title="Gesprächsvorbereitung und -einstieg",
)
LearningSequenceFactory(title="Analyse", parent=circle)
create_standard_learning_unit(
f"{lc_title} - Analyse",
parent=circle,
category_name=title,
competence_id="V2",
learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation",
)
LearningSequenceFactory(title="Lösung", parent=circle)
create_standard_learning_unit(
f"{lc_title} - Lösung",
parent=circle,
category_name=title,
competence_id="V3",
learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren",
)
LearningSequenceFactory(title="Abschluss", parent=circle)
create_standard_learning_unit(
f"{lc_title} - Abschluss",
parent=circle,
category_name=title,
competence_id="V4",
learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung",
)
create_learning_sequence_transfer(circle, title)
def create_html_goals(goals):
html = ""
if goals is None:
return None
for goal in goals:
if goal["type"] == GoalsType.PARAGRAPH:
html += f'<p class="mb-4">{goal["content"]}</p>'
elif goal["type"] == GoalsType.LIST:
icon = '<it-icon-check class="hidden h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>'
li_classes = '"flex items-center"'
ul_classes = '"mb-4"'
html += f"<ul class={ul_classes}>{''.join([f'<li class={li_classes}>{icon}<span>{item}</span></li>' for item in goal['content']])}</ul>"
elif goal["type"] == GoalsType.HEADING:
h3_classes = '"mb-4"'
html += f"<h3 class={h3_classes}>{goal['content']}</h3>"
return html
def setup_circle_factory_kwargs(title, lp, goals, description):
kwargs = {
"title": title,
"parent": lp,
}
# don't include none values as the factory will fail otherwise
for k, v in [("goals", create_html_goals(goals)), ("description", description)]:
if v is not None:
kwargs[k] = v
return kwargs
def create_circle_betreuen(lp, title="Betreuen"):
circle = CircleFactory(
title=title,
parent=lp,
description="Einen Kunden einmal zu beraten ist eine Sache. Einen Kunden nachhaltig zu betreuen eine andere! In diesem Circle lernst du, wie deine Kunden zufrieden bleiben und du dein Portfolio ausbauen kannst.",
)
LearningSequenceFactory(title="Starten", parent=circle, icon="it-icon-ls-start")
LearningUnitFactory(title="Einführung", parent=circle)
LearningContentPlaceholderFactory(
title="Verschaff dir einen Überblick",
parent=circle,
)
LearningSequenceFactory(title="Rechtsstreitigkeiten", parent=circle)
LearningUnitFactory(title="Rechtsstreitigkeiten", parent=circle)
LearningContentPlaceholderFactory(
title="Mediathek",
parent=circle,
content_url="/course/versicherungsvermittler-in/media",
)
LearningContentPlaceholderFactory(
title="Rafael Fasel hat Ärger mit seinem Vermieter",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Fachcheck",
parent=circle,
)
LearningSequenceFactory(title="Sparen", parent=circle)
LearningUnitFactory(title="Sparen", parent=circle)
LearningContentPlaceholderFactory(
title="Mediathek",
parent=circle,
content_url="/course/versicherungsvermittler-in/media",
)
LearningContentPlaceholderFactory(
title="Familie Babic spart auf ein Ziel",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Fachcheck",
parent=circle,
)
LearningSequenceFactory(title="Wohneigentum", parent=circle)
LearningUnitFactory(title="Wohneigentum", parent=circle)
LearningContentPlaceholderFactory(
title="Mediathek",
parent=circle,
content_url="/course/versicherungsvermittler-in/media",
)
LearningContentPlaceholderFactory(
title="Familie Bonsera kauft ein Haus",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Fachcheck",
parent=circle,
)
LearningSequenceFactory(title="Selbstständigkeit", parent=circle)
LearningUnitFactory(title="Selbstständigkeit", parent=circle)
LearningContentPlaceholderFactory(
title="Mediathek",
parent=circle,
content_url="/course/versicherungsvermittler-in/media",
)
LearningContentPlaceholderFactory(
title="Patrizia Feller macht sich selbstständig",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Fachcheck",
parent=circle,
)
LearningSequenceFactory(title="Erben/Vererben", parent=circle)
LearningUnitFactory(title="Erben/Vererben", parent=circle)
LearningContentPlaceholderFactory(
title="Mediathek",
parent=circle,
content_url="/course/versicherungsvermittler-in/media",
)
LearningContentPlaceholderFactory(
title="Davide und Giulia vererben ihr Haus",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Fachcheck",
parent=circle,
)
LearningSequenceFactory(title="Beenden", parent=circle, icon="it-icon-ls-end")
LearningUnitFactory(title="Circle beenden", parent=circle)
create_learning_content_beenden(circle)
def create_circle_vernetzen(lp, title="Vernetzen"):
circle = CircleFactory(
title=title,
parent=lp,
description="Du suchst nach einer Möglichkeit, das Gelernte noch besser zu vernetzen? Unsere Onlinetraining und/oder Webinare können dich dabei unterstützen.",
)
LearningSequenceFactory(title="Einführung ", parent=circle, icon="it-icon-ls-start")
LearningUnitFactory(title="Einführung", parent=circle)
LearningContentPlaceholderFactory(
title="Verschaffe dir einen Überblick",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Mediathek",
parent=circle,
content_url="/course/versicherungsvermittler-in/media",
)
LearningSequenceFactory(title="Training", parent=circle)
LearningUnitFactory(title="Onlinetrainings", parent=circle)
LearningContentPlaceholderFactory(
title="Unknown ???",
parent=circle,
)
LearningUnitFactory(title="Webinare", parent=circle)
LearningContentPlaceholderFactory(
title="Unknown ???",
parent=circle,
)
create_learning_sequence_transfer(circle, "Vernetzen")
def create_circle_pruefungsvorbereitung(lp, title="Prüfungsvorbereitung"):
circle = CircleFactory(
title=title,
parent=lp,
)
LearningSequenceFactory(title="Einführung ", parent=circle, icon="it-icon-ls-start")
LearningUnitFactory(title="Einführung", parent=circle)
LearningContentPlaceholderFactory(
title="Verschaffe dir einen Überblick",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Mediathek",
parent=circle,
content_url="/course/versicherungsvermittler-in/media",
)
LearningSequenceFactory(title="Aufbau", parent=circle)
LearningUnitFactory(title="Aufbau und Struktur", parent=circle)
LearningContentPlaceholderFactory(
title="Unknown ???",
parent=circle,
)
LearningSequenceFactory(title="Nullserien", parent=circle)
LearningUnitFactory(title="Schriftliche Nullserien", parent=circle)
LearningContentPlaceholderFactory(
title="Nullserie 1",
parent=circle,
)
LearningUnitFactory(title="Mündliche Nullserien", parent=circle)
LearningContentPlaceholderFactory(
title="Nullserie 1 - Aufgabe",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Nullserie 1 - Lösung",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Nullserie 2 - Aufgabe",
parent=circle,
)
LearningContentPlaceholderFactory(
title="Nullserie 2 - Lösung",
parent=circle,
)
create_learning_sequence_transfer(circle, "Prüfungsvorbereitung")
def create_circle_pruefung(lp, title="Prüfung"):
circle = CircleFactory(
title=title,
parent=lp,
description="Hier erfährst du alles, was du für die Zulassungsprüfung zum/zur Versicherungsvermittler/-in VBV wissen musst. Du trainierst konkret mit zwei Nullserien, damit du dich zielgerichtet auf die Prüfung vorbereiten kannst.",
)
LearningSequenceFactory(title="Anmeldung", parent=circle, icon="it-icon-ls-start")
LearningUnitFactory(title="Anmeldung", parent=circle)
LearningContentPlaceholderFactory(
title="Anmeldung",
parent=circle,
)
LearningSequenceFactory(
title="Durchführung", parent=circle, icon="it-icon-ls-start"
)
LearningUnitFactory(title="Durchführung", parent=circle)
LearningContentPlaceholderFactory(
title="Durchführung",
parent=circle,
)
LearningSequenceFactory(title="Feedback", parent=circle, icon="it-icon-ls-start")
LearningUnitFactory(title="Feedback", parent=circle)
LearningContentPlaceholderFactory(
title="Feedback",
parent=circle,
)
def create_standard_learning_unit(
title,
parent,
category_name,
competence_id="V1",
wbt_url=None,
check_url=None,
learning_unit_title=None,
):
if learning_unit_title is None:
learning_unit_title = category_name
lu = LearningUnitFactory(
title=learning_unit_title,
parent=parent,
course_category=CourseCategory.objects.get(
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, title=category_name
),
)
if wbt_url is None:
LearningContentPlaceholderFactory(
title=title,
parent=parent,
)
else:
LearningContentLearningModuleFactory(
title=title,
parent=parent,
content_url=wbt_url,
)
competence_page = CompetencePage.objects.get(competence_id=competence_id)
PerformanceCriteriaFactory(
parent=competence_page,
competence_id=f"{competence_id}.{category_name}",
title=f"Ich bin fähig bei {category_name} eine {competence_page.title} zu machen",
learning_unit=lu,
)
def create_learning_sequence_transfer(parent, title, lc_praxis_title=None):
LearningSequenceFactory(title="Transfer", parent=parent, icon="it-icon-ls-end")
LearningUnitFactory(title="Transfer, Reflexion, Feedback", parent=parent)
if lc_praxis_title:
LearningContentPlaceholderFactory(
title=lc_praxis_title,
parent=parent,
)
LearningContentPlaceholderFactory(
title=f"Fachcheck {title}",
parent=parent,
)
LearningContentPlaceholderFactory(
title="Reflexion",
parent=parent,
)
LearningContentPlaceholderFactory(
parent=parent,
)
def create_learning_content_beenden(parent):
LearningContentRichTextFactory(
title="Hier entsteht die Lernsequenz «beenden»",
parent=parent,
content_url="https://www.vbv.ch/",
description=RichText(
"""
<h2 data-block-key="pwyep">Hier entsteht die Lernsequenz \u00abbeenden\u00bb</h2><h3
data-block-key="dppb3">Reflektiert</h3>
<img src="/static/media/demo_oktober/beenden.jpg" style="
float: right;
margin-left: 32px;
margin-bottom: 32px;
">
<p data-block-key="bho67">Du hast dich im
Circle mit bestimmten Handlungskompetenzen auseinandergesetzt und dir zu verschiedenen
Handlungsfeldern Fachkenntnisse angeeignet. Es handelt sich hier um viel Lernstoff,
der verarbeitet werden muss.</p><p data-block-key="f547i">Deshalb hast du bereits am
Ende jeder Lerneinheit eine Selbsteinsch\u00e4tzung der angestrebten
Handlungskompetenzen vorgenommen. Nun ist es Zeit, nochmals auf das KompetenzNavi zu
schauen. Wo sind noch L\u00fccken? Was braucht es noch? Reflektiere hier nochmals
deine Erfahrungen. Dies kann in Form eines Lerntagebuchs und/oder im Austausch mit
deiner Lernbegleitung passieren.</p><h3 data-block-key="7ljuq">Wieso ist dies
sinnvoll?</h3><p data-block-key="7sf2">Das F\u00fchren eines Lerntagebuchs und das
Beantworten von Reflexionsfragen helfen dir den eigenen Lern- und Denkprozess sichtbar
und begreifbar zu machen. Es deckt deine pers\u00f6nlichen St\u00e4rken und
Schw\u00e4chen w\u00e4hrend der Erarbeitung auf und hilft dir, dich laufend zu
verbessern.</p><p data-block-key="ecq4l">Die folgenden Fragestellungen k\u00f6nnen dir
dabei helfen.</p><h3 data-block-key="9mbpa">Reflexionsbeispiel zum Lerninhalt:</h3>
<ul>
<li data-block-key="bgr7s">Was gelingt mir bereits gut?</li>
<li data-block-key="72mrj">Wo muss ich mich noch vertiefen oder nochmals repetieren?
</li>
<li data-block-key="3gq01">Blick auf das KompetenzNavi sch\u00e4rfen</li>
<li data-block-key="8443s">Was nehme ich mit?</li>
<li data-block-key="4nstg">Was m\u00f6chte ich nochmals mit meiner Lernbegleitung
anschauen?
</li>
</ul><h3 data-block-key="6us0c">Reflexionsbeispiele zum Vorgehen/Verhalten:</h3>
<ul>
<li data-block-key="5ih9d">Wie habe ich mich auf den Circle vorbereitet (z.B. Lernzeit
eingeplant)?
</li>
<li data-block-key="6piqr">Wie gut ist mir die Einhaltung der Lernzeiten gelungen? Was
f\u00fchrte zum Erfolg/Misserfolg?
</li>
<li data-block-key="dglus">Wie bin ich beim Lernen vorgegangen (Einsatz von
Lernmethoden)?
</li>
<li data-block-key="53o3r">Was will ich f\u00fcr den n\u00e4chsten Circle im
Lernprozess \u00e4ndern/verbessern?
</li>
</ul><h3 data-block-key="86e5g">Tools, die du f\u00fcr deine Reflexion in Form eines
Lerntagebuches verwenden kannst:</h3>
<ul>
<li data-block-key="16m0n">OneNote</li>
<li data-block-key="disfa">Miroboard</li>
<li data-block-key="2sr1l">Worddokument</li>
<li data-block-key="5lfsl">Powerpointpr\u00e4sentation</li>
<li data-block-key="fvlkb">Notizbuch</li>
</ul><p data-block-key="fu5sc">Der Vorteil eines digitalen Lerntagebuchs besteht in
erster Linie darin, dass sehr einfach Inhalte strukturiert, erg\u00e4nzt und
bearbeitet werden k\u00f6nnen.</p>
"""
),
)
LearningContentPlaceholderFactory(
parent=parent,
)
def create_learning_content_transferauftrag(title, parent):
LearningContentRichTextFactory(
title=title,
parent=parent,
content_url="https://www.vbv.ch/",
description=RichText(
"""
<h2 data-block-key="pwyep">Hier entsteht die Lernsequenz «üben»</h2><h3
data-block-key="dppb3">Praxisorientiert</h3>
<p data-block-key="bho67">Die Lernsequenz «üben» fordert die Teilnehmenden auf, in der eigenen Organisation anhand eines Transferauftrages eine entsprechende Handlungssituation durchzuführen.</p>
<p data-block-key="f547i">Der Auftrag unterstützt den Transfer in die Praxis und nimmt einzelne Themen aus dem jeweiligen Circle nochmals auf.</p>
<p data-block-key="f547i">Der Teilnehmende wird sein Ergebnis in MyVBV hochladen.</p>
<p data-block-key="f547i">Feedback erfolgt durch die Lernbegleitung oder durch weitere vom Teilnehmenden definierte Personen.<br>Ein Abgleich mit Musterlösungen wird wo sinnvoll angeboten</p>
<p data-block-key="f547i">Zusätzlich zum Auftrag wird auf das relevante Fachwissen aus der Mediathek verwiesen und wo sinnvoll Hilfsmittel zur Verfügung gestellt.</p>
<h3 data-block-key="7ljuq">Hier siehst du ein Beispiel eines Transferauftrages mit einer entsprechenden Musterlösung. </h3>
<p data-block-key="7sf2">Schnuppere mal rein. Viel Spass!</p>
<p>
<img src="/static/media/demo_oktober/der_erste_eindruck.jpg">
</p>
<p>
<a href="/static/media/demo_oktober/Transferauftrag_Der_erste_Eindruck_zaehlt.pdf">PDF Transferauftrag: Der erste Eindruck zählt</a><br>
<a href="/static/media/demo_oktober/Transferauftrag_Der_erste_Eindruck_zaehlt_Musterlösung.pdf">PDF Transferauftrag: Der erste Eindruck zählt - Lösung</a>
</p>
"""
),
)