From cf0ffe66ac4a6fb400ddabd297e074b183ef22a1 Mon Sep 17 00:00:00 2001 From: Christian Cueni Date: Tue, 6 Jun 2023 10:21:16 +0200 Subject: [PATCH] Update goals Update basis Update circle Haushalt Update Reisen Add Pensionierung Update Gesundheit Update Vorbereitung Update WBTs Update kmu Add Vermittler reflection Add VV assignment "Gesundheit" Add assignment "Gesundheit" Add link to Fachcheck --- .../assignment/creators/create_assignments.py | 734 ++++++++++++++- .../commands/create_default_courses.py | 13 +- .../learnpath/create_vv_new_learning_path.py | 854 +++++++++++++----- .../vbv_lernwelt/learnpath/vv_circle_goals.py | 650 ++++++++++--- ..._d_Vorsorgeanalyse_Feller_Bonsera_2023.pdf | Bin 0 -> 336735 bytes 5 files changed, 1873 insertions(+), 378 deletions(-) create mode 100644 server/vbv_lernwelt/static/media/assignments/VV_einkommenssicherung_d_Vorsorgeanalyse_Feller_Bonsera_2023.pdf diff --git a/server/vbv_lernwelt/assignment/creators/create_assignments.py b/server/vbv_lernwelt/assignment/creators/create_assignments.py index 2036fd65..992323a7 100644 --- a/server/vbv_lernwelt/assignment/creators/create_assignments.py +++ b/server/vbv_lernwelt/assignment/creators/create_assignments.py @@ -1,3 +1,7 @@ +from wagtail.blocks import StreamValue +from wagtail.blocks.list_block import ListBlock, ListValue +from wagtail.rich_text import RichText + from vbv_lernwelt.assignment.models import ( AssignmentListPage, AssignmentType, @@ -14,11 +18,8 @@ from vbv_lernwelt.assignment.tests.assignment_factories import ( UserTextInputBlockFactory, ) from vbv_lernwelt.core.utils import replace_whitespace -from vbv_lernwelt.course.consts import COURSE_UK +from vbv_lernwelt.course.consts import COURSE_UK, COURSE_VERSICHERUNGSVERMITTLERIN_ID from vbv_lernwelt.course.models import CoursePage -from wagtail.blocks import StreamValue -from wagtail.blocks.list_block import ListBlock, ListValue -from wagtail.rich_text import RichText def create_uk_fahrzeug_casework(course_id=COURSE_UK): @@ -1405,3 +1406,728 @@ def create_uk_reflection(course_id=COURSE_UK, circle_title="Fahrzeug"): assignment.save() return assignment + + +def create_vv_reflection(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, _circle_title="Fahrzeug"): + assignment_list_page = ( + CoursePage.objects.get(course_id=course_id) + .get_children() + .exact_type(AssignmentListPage) + .first() + ) + + assignment = AssignmentFactory( + parent=assignment_list_page, + assignment_type=AssignmentType.REFLECTION.name, + title=f"Reflexion", + effort_required="ca. 1 Stunde", + intro_text=replace_whitespace( + """ +

+ Du hast in diesem Circle viele neue Inhalte und Inputs erhalten. + Nun ist es Zeit, nochmals auf dein Kompetenzprofil zu schauen. + Das Beantworten von Reflexionsfragen hilft dir den eigenen Lern- und Denkprozess sichtbar und begreifbar zu machen. + Es deckt deine persönlichen Stärken und Schwächen während der Erarbeitung auf und hilft dir, dich laufend zu verbessern. +

+ """ + ), + performance_objectives=[], + ) + + assignment.tasks = [] + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Frage 1: Was gelingt mir bereits gut?", + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "user_text_input", + UserTextInputBlockFactory(), + ), + ], + ), + ), + ) + ) + + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Frage 2: Vertiefung", + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + "Was will ich noch vertiefen, nochmals repetieren oder mit meiner Lernbegleitung anschauen?" + ) + ), + ), + ], + ), + ), + ) + ) + + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Frage 3: Was nehme ich mit?", + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "user_text_input", + UserTextInputBlockFactory(), + ), + ], + ), + ), + ) + ) + + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Frage 4: Vorbereitung", + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + "Wie habe ich mich auf den Circle vorbereitet (z. B. Lerninhalt aufgeteilt und Lernzeit eingeplant)?" + ) + ), + ), + ], + ), + ), + ) + ) + + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Frage 5: Austausch", + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + "Wie engagiert war ich beim Austausch mit meinem Lernpartner/meiner Lernpartnerin und dem Transfer in die Praxis?" + ) + ), + ), + ], + ), + ), + ) + ) + + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Frage 6: Verbesserung", + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + "Was führte zum Erfolg bzw. Misserfolg? Was will ich für den nächsten Circle im Lernprozess beibehalten oder ändern/verbessern?" + ) + ), + ), + ], + ), + ), + ) + ) + + assignment.save() + + return assignment + + +def create_vv_einkommenssicherung_casework(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID): + assignment_list_page = ( + CoursePage.objects.get(course_id=course_id) + .get_children() + .exact_type(AssignmentListPage) + .first() + ) + + assignment = AssignmentFactory( + parent=assignment_list_page, + title="Heirat: Was ändert sich", + effort_required="45 bis 90 Minuten", + intro_text=replace_whitespace( + """ +

Thema

+

Welche Auswirkungen hat eine Heirat bezüglich Absicherung durch die Sozialversicherungen und durch private Versicherungen? Was ändert sich bezüglich Begünstigung, Erbrecht und steuerlicher Situation?

+

Was muss bei den Vorsorgelösungen angepasst werden?

+

Ausgangslage

+

+ In deinem Beratungsalltag begegnest du unterschiedlichen Lebens- und Familienformen. Dabei ist es wichtig zu wissen, welche Leistungen von den Sozialversicherungen zu erwarten sind. Dieser Praxisauftrag legt den Fokus auf den Vergleich, wenn ein Paar mit Kind entweder im Konkubinat lebt oder bald heiratet. Bearbeite dazu die nachfolgenden Aufgaben. +

+

+ Du kennst den Fall von Patrizia Feller und Marco Bonsera. Sie überlegen sich, ob eine Heirat aufgrund des gemeinsamen Kindes sinnvoll sein könnte. Zeige auf, wie sich die Situation verändert, wenn die beiden heiraten würden. +

+

Lernbegleitung

+

Finde innerhalb deiner Organisation eine Person, die dich, während dem Lernprozess begleitet und dir Feedback zu den Ergebnissen deines Praxisauftrags geben kann. Dies können deine Vorgesetzte/dein Vorgesetzter oder eine Kollegin/ein Kollege sein.

+

+ Vereinbare mit dieser Person einen Termin fürs Feedback. +

+ """ + ), + performance_objectives=[ + ( + "performance_objective", + PerformanceObjectiveBlockFactory( + text="Durch eine Bestandesaufnahme der aktuellen Policen prüfen, ob die Leistungen dem Bedarf des Kunden entsprechen (C1/1)" + ), + ), + ( + "performance_objective", + PerformanceObjectiveBlockFactory( + text="Den Kunden bedarfsgerechte Vorschläge für Anpassungen der Versicherungslösungen unterbreiten (C1/2)" + ), + ), + ( + "performance_objective", + PerformanceObjectiveBlockFactory( + text="Änderungswünsche der Kundinnen/Kunden entgegennehmen und bestehende Verträge anpassen (C2)" + ), + ), + ( + "performance_objective", + PerformanceObjectiveBlockFactory( + text="Die Daten der Kundinnen/Kunden und deren Portfolio (Policen) auf aktuellem Stand halten (C2/4)" + ), + ), + ], + evaluation_document_url="", + evaluation_description="", + ) + + assignment.evaluation_tasks = [] + + assignment.tasks = [] + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Teilaufgabe 1: Ausgangslage/Unterlagen", + # it is hard to create a StreamValue programmatically, we have to + # create a `StreamValue` manually. Ask Daniel and/or Ramon + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "explanation", + ExplanationBlockFactory( + text=RichText( + replace_whitespace( + """ + Welche Unterlagen und Informationen brauchst du generell, um die Vorsorge-Situation deiner Kunden analysieren zu können? + """ + ) + ) + ), + ), + ("user_text_input", UserTextInputBlockFactory()), + ( + "explanation", + ExplanationBlockFactory( + text=RichText( + replace_whitespace( + """ + Da du erst kürzlich für die beiden eine Vorsorgeanalyse erstellt hast, kannst du dir hier die Analyse nochmals anschauen. Die beiden sind im Konkubinat und haben vor einigen Monaten ihre erste gemeinsame Tochter (Elina) bekommen. + """ + ) + ) + ), + ), + ], + ), + ), + ) + ) + + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Teilaufgabe 2: Änderungen", + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "explanation", + ExplanationBlockFactory( + text=RichText( + replace_whitespace( + """ +

Zeige auf, wie sich die Vorsorgesituation verändert, wenn die beiden heiraten würden. Welche Änderungen gibt es bei der 1. Säule?

+

Wie hoch ist die jährliche maximale AHV-Altersrente für Ehepaare?

+

Berechne die jährliche AHV-Witwen- und AHV-Witwerrente für die beiden.

+ + """ + ) + ) + ), + ), + ("user_text_input", UserTextInputBlockFactory()), + ( + "explanation", + ExplanationBlockFactory( + text=RichText( + replace_whitespace( + """ +

Welche Änderungen gibt es bei der 2. Säule im Falle eines Unfalls?

+

Berechne die jährliche maximale UVG-Witwen- und UVG-Witwerrente für die beiden.

+ +

Welche Änderungen gibt es bei der 2. Säule im Falle einer Krankheit?

+ """ + ) + ) + ), + ), + ("user_text_input", UserTextInputBlockFactory()), + ], + ), + ), + ) + ) + + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Teilaufgabe 3: Erb- und Steuerrecht", + # TODO: add document upload + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +

Gibt es zusätzliche Deckungen, die du der Person empfehlen würdest? Begründe deine Empfehlung

+

Was ist bei verheirateten Paaren steuertechnisch anders?

+ """ + ) + ), + ), + ], + ), + ), + ) + ) + + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Teilaufgabe 4: Generelle Änderungen", + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +

Welche Punkte aktualisierst du für das neu verheiratete Paar im CRM?

+

Welche Versicherungen des Paars brauchen Anpassungen?

+ """ + ) + ), + ), + ], + ), + ), + ) + ) + + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Teilaufgabe 5: Deine Meinung", + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +

Nachdem du nun die Auswirkungen einer Heirat unter die Lupe genommen hast, interessiert uns deine persönliche Meinung.

+

Heirat: Lohnt sich eine Heirat aus rein finanzieller Sicht? Begründe deine Ansicht.

+ """ + ) + ), + ), + ], + ), + ), + ) + ) + + assignment.save() + + return assignment + + +def create_vv_gesundheit_casework(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID): + assignment_list_page = ( + CoursePage.objects.get(course_id=course_id) + .get_children() + .exact_type(AssignmentListPage) + .first() + ) + + assignment = AssignmentFactory( + parent=assignment_list_page, + title="Krankenversicherung: Passt die Lösung noch?", + effort_required="60 bis 90 Minuten", + intro_text=replace_whitespace( + """ +

Ausgangslage

+

+ Die Krankenversicherung bietet deinen Kunden ein Leben lang Deckung für unterschiedliche Risiken. Bei gewissen Erkrankungen können Kosten bis zu einem sechsstelligen Betrag anfallen. Aus diesem Grund ist es wichtig, die Krankenversicherungsdeckung regelmässig auf die individuellen Bedürfnisse und die Lebenssituation des Kunden zu überprüfen und wo nötig anzupassen. Dieser Praxisauftrag behandelt dieses Thema. Er legt den Fokus zusätzlich auf das Thema Zahnversicherung. Bearbeite dazu die nachfolgenden Aufgaben. +

+

+ Du kennst den Fall von Patrizia Feller und Marco Bonsera. Sie überlegen sich, ob eine Heirat aufgrund des gemeinsamen Kindes sinnvoll sein könnte. Zeige auf, wie sich die Situation verändert, wenn die beiden heiraten würden. +

+

Lernbegleitung

+

Finde innerhalb deiner Organisation eine Person, die dich, während dem Lernprozess begleitet und dir Feedback zu den Ergebnissen deines Praxisauftrags geben kann. Dies können deine Vorgesetzte/dein Vorgesetzter oder eine Kollegin/ein Kollege sein.

+

+ Vereinbare mit dieser Person einen Termin fürs Feedback. +

+ + """ + ), + performance_objectives=[ + ( + "performance_objective", + PerformanceObjectiveBlockFactory( + text="Für das zu führende Gespräch im Handlungsfeld Gesundheit geeignete Hilfsmittel und Unterlagen zusammenstellen (A2.5)" + ), + ), + ( + "performance_objective", + PerformanceObjectiveBlockFactory( + text="Durch eine Bestandesaufnahme der aktuellen Policen prüfen, ob die Leistungen zum Handlungsfeld Gesundheit dem Bedarf des Kunden entsprechen (C1.1)" + ), + ), + ( + "performance_objective", + PerformanceObjectiveBlockFactory( + text="Den Kunden bedarfsgerechte Vorschläge für Anpassungen der Versicherungslösung zum Handlungsfeld Gesundheit unterbreiten (Up-Selling) (C1.2)" + ), + ), + ], + evaluation_document_url="", + evaluation_description="", + ) + + assignment.evaluation_tasks = [] + + assignment.tasks = [] + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Teilaufgabe 1: Grundlagen der Krankenversicherung", + # it is hard to create a StreamValue programmatically, we have to + # create a `StreamValue` manually. Ask Daniel and/or Ramon + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +

Welche Risiken sind über die private Krankenversicherung gedeckt?

+ """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +

Wann beginntdie Versicherungspflicht nach KVG?

+ """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +

Welche Unterlagenund Angaben benötigst du von deinem Kunden, damit du ihn bzgl. seiner Kranken-versicherung optimal beraten kannst?

+ """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +

Welches sind die Vorteile einer vorgeburtlichen Versicherungsdeckung?

+ """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +

Welche Informationenmüssen dem Krankenversicherer möglichst rasch nach der Geburt zugestellt werden?

+ """ + ) + ), + ), + ], + ), + ), + ) + ) + + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Teilaufgabe 2: Franchise oder Selbstbehalt", + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "explanation", + ExplanationBlockFactory( + text=RichText( + replace_whitespace( + """ + Hat sich der Kunde während ein paar Jahren nicht mehr mit dem Thema Krankenversicherung befasst, geht rasch einmal vergessen, was hinter dem wichtigen Begriff «Franchise» steckt. Erst wenn er diesen wieder verstanden hat, verfügt er über eine angemessene Grundlage, um gegen Ende des Jahres zu entscheiden, ob und in welchem Rahmen er diese anpassen soll. + """ + ) + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +

Wie erklärst du dem Kunden diesen Begriff?

+

Mach am besten gleich noch eine Skizze mit einem Rechenbeispiel dazu. Gehe davon aus, dass dein Kunde eine Franchise von CHF 500 und Behandlungskosten von CHF 1'300hat.

+ """ + ) + ), + ), + ], + ), + ), + ) + ) + + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Teilaufgabe 3: Wechsel der Krankenversicherung", + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "explanation", + ExplanationBlockFactory( + text=RichText( + replace_whitespace( + """ +

Jeden Herbst kommuniziert das BAG die neuen, genehmigten KVG-Prämien der Schweizer Krankenkassen.

+

Schau dir dazu den Prämienrechner des BAG unter www.priminfo.ch genauer an.

+ """ + ) + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +

Erkläre deinem Kunden, welche Angaben er unbedingt braucht, um den Prämienrechner zu benutzen. Welchen Nutzen hat er davon? Was kann er von diesem entnehmen?

+ """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +

Welche Fristen muss er bei einem Wechsel der KVG-Lösungbeachten?

+ """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +

Wie wäre es bei der Zusatzversicherung nach VVG?

+ """ + ) + ), + ), + ], + ), + ), + ) + ) + + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Teilaufgabe 4: Zahnversicherung", + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "explanation", + ExplanationBlockFactory( + text=RichText( + replace_whitespace( + """ +

Die Zahnversicherung – ein Thema, welches die meisten Kunden interessiert. Doch kaum einer weiss Bescheid. Wie sieht es bei dir aus?

+ """ + ) + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +

Weshalb ist dieses Thema wichtig?

+ """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +

Welche Kosten deckt die Grundversicherung? Welche relevanten Risiken sind nicht gedeckt?

+ """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +

Zahnspangen-Kosten bei Kindern: Wie können diese gedeckt werden?

+ """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +

Welche Tipps gibst du dabei deinem Kunden?

+ """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +

Welcher kritische Punkt ist bei diesem Thema zu beachten?

+ """ + ) + ), + ), + ], + ), + ), + ) + ) + + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Teilaufgabe 5: Reflexion und Learnings", + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +

Wie ist dir die Vor-bereitung der einzelnen Themen für eine potenzielle Kundenberatunggelungen? Was verlief gut und was verlief weniger gut? Begründe deine Einschätzung.

+ """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +

Leite daraus deine Learnings ab. Was konntest du noch frei und ohne Hilfsmittel erklären? Wie könntest du einzelne Punkte verständlicher erklären?

+ """ + ) + ), + ), + ], + ), + ), + ) + ) + + assignment.save() + + return assignment 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 e25bb0fc..76b832df 100644 --- a/server/vbv_lernwelt/course/management/commands/create_default_courses.py +++ b/server/vbv_lernwelt/course/management/commands/create_default_courses.py @@ -8,7 +8,7 @@ from vbv_lernwelt.assignment.creators.create_assignments import ( create_uk_fahrzeug_casework, create_uk_fahrzeug_prep_assignment, create_uk_kickoff_prep_assignment, - create_uk_reflection, + create_uk_reflection, create_vv_reflection, create_vv_einkommenssicherung_casework, create_vv_gesundheit_casework, ) from vbv_lernwelt.assignment.models import Assignment from vbv_lernwelt.assignment.services import update_assignment_completion @@ -117,12 +117,21 @@ def command(course): def create_versicherungsvermittlerin_course(): # Versicherungsvermittler/in mit neuen Circles - create_versicherungsvermittlerin_with_categories( + course = create_versicherungsvermittlerin_with_categories( course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, title="Versicherungsvermittler/-in", ) + + # assignments create assignments parent page + _assignment_list_page = AssignmentListPageFactory( + 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_reflection(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID) create_vv_new_learning_path() cs = CourseSession.objects.create( 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 e3225c3c..76f18143 100644 --- a/server/vbv_lernwelt/learnpath/create_vv_new_learning_path.py +++ b/server/vbv_lernwelt/learnpath/create_vv_new_learning_path.py @@ -6,6 +6,7 @@ from wagtail.models import Locale, Page, Site from wagtail.rich_text import RichText from wagtail_localize.models import LocaleSynchronization +from vbv_lernwelt.assignment.models import Assignment from vbv_lernwelt.competence.factories import PerformanceCriteriaFactory from vbv_lernwelt.competence.models import CompetencePage from vbv_lernwelt.core.admin import User @@ -18,13 +19,11 @@ from vbv_lernwelt.learnpath.tests.learning_path_factories import ( LearningContentMediaLibraryFactory, LearningContentPlaceholderFactory, LearningContentRichTextFactory, - LearningContentTestFactory, LearningContentVideoFactory, LearningPathFactory, LearningSequenceFactory, LearningUnitFactory, - TopicFactory, -) + TopicFactory, LearningContentAssignmentFactory, LearningContentTestFactory, ) from vbv_lernwelt.learnpath.vv_circle_goals import GoalsType, VV_CIRCLE_GOALS # todo: remove when all Handlungsfelder are ready @@ -60,46 +59,18 @@ def create_vv_new_learning_path( 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_haushalt(lp) create_circle_rechtsstreitigkeiten(lp) create_circle_reisen(lp) create_circle_einkommenssicherung(lp) + create_circle_wohneigentum(lp) + create_circle_pensionierung(lp) + create_circle_erben(lp) + create_circle_gesundheit(lp) + create_circle_sparen(lp) + create_circle_selbstaendigkeit(lp) + create_circle_kmu(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", @@ -142,14 +113,13 @@ def create_circle_basis(lp, title="Basis"): title=title, parent=lp, description=VV_CIRCLE_GOALS["basis"]["description"], + goals=VV_CIRCLE_GOALS["basis"]["goals"], ) LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start") - LearningUnitFactory(title="Einführung", parent=circle) - LearningContentVideoFactory( + LearningUnitFactory(title="Einführung", parent=circle, title_hidden=True) + LearningContentPlaceholderFactory( 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", @@ -197,12 +167,13 @@ def create_circle_basis(lp, title="Basis"): title="Organisiere deinen Arbeitsalltag", parent=circle, ) - LearningContentPlaceholderFactory( - title="Soziale Medien und Datenschutz", + LearningContentLearningModuleFactory( + title="Lucas Auftritt in den sozialen Medien und der Umgang mit sensiblen Daten", parent=circle, + content_url="https://courses.myvbv.iterativ.ch/courses/de-ba-00-lucas-auftritt-in-den-sozialen-medien-und-der-umgang-mit-sensiblen-daten.zip/index.html#/", ) LearningContentPlaceholderFactory( - title="Beraterpflichten (inkl. VBV-WBT)", + title="Beraterpflichten", parent=circle, ) LearningContentPlaceholderFactory( @@ -225,7 +196,7 @@ def create_circle_basis(lp, title="Basis"): parent=circle, ) LearningContentPlaceholderFactory( - title="Basiswissen Versicherungen (inkl. VBV-WBT)", + title="Basiswissen Versicherungen", parent=circle, ) LearningContentPlaceholderFactory( @@ -243,10 +214,14 @@ def create_circle_basis(lp, title="Basis"): LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end") LearningUnitFactory(title="Reflexion, Feedback", parent=circle) - LearningContentPlaceholderFactory( + LearningContentAssignmentFactory( title="Reflexion", + assignment_type="REFLECTION", parent=circle, - ) + content_assignment=Assignment.objects.get( + slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" + ), + ), LearningContentFeedbackFactory( parent=circle, ) @@ -256,22 +231,13 @@ 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"), - ], + description=VV_CIRCLE_GOALS["gewinnen"]["description"], + goals=VV_CIRCLE_GOALS["gewinnen"]["goals"], ) LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start") - LearningUnitFactory(title="Einführung", parent=circle) + LearningUnitFactory(title="Einführung", title_hidden=True, parent=circle) LearningContentPlaceholderFactory( - title="Verschaff dir einen Überblick", + title="Verschaffe dir einen Überblick", parent=circle, ) @@ -321,10 +287,14 @@ wie du dein Netzwerk aufbauen und erweitern kannst, um damit neue Kunden zu gewi LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end") LearningUnitFactory(title="Reflexion, Feedback", parent=circle) - LearningContentPlaceholderFactory( + LearningContentAssignmentFactory( title="Reflexion", + assignment_type="REFLECTION", parent=circle, - ) + content_assignment=Assignment.objects.get( + slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" + ), + ), LearningContentFeedbackFactory( parent=circle, ) @@ -334,14 +304,14 @@ def create_circle_fahrzeug(lp, title="Fahrzeug"): circle = CircleFactory( title=title, parent=lp, + description=VV_CIRCLE_GOALS["fahrzeug"]["description"], + goals=VV_CIRCLE_GOALS["fahrzeug"]["goals"], ) LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start") - LearningUnitFactory(title="Einführung", parent=circle) - LearningContentVideoFactory( - title="Verschaff dir einen Überblick", + LearningUnitFactory(title="Einführung", parent=circle, title_hidden=True) + LearningContentPlaceholderFactory( + title="Verschaffe 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}", @@ -355,7 +325,7 @@ def create_circle_fahrzeug(lp, title="Fahrzeug"): 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", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-fz-01-rafael-fasel-wechselt-sein-auto-einstieg.zip/index.html#/", learning_unit_title="Gesprächsvorbereitung und -einstieg", ) @@ -365,7 +335,7 @@ def create_circle_fahrzeug(lp, title="Fahrzeug"): 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", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-fz-02-rafael-fasel-wechselt-sein-auto-analyse.zip/index.html", learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation", ) @@ -375,7 +345,7 @@ def create_circle_fahrzeug(lp, title="Fahrzeug"): 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", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-fz-03-rafael-fasel-wechselt-sein-auto-losung.zip/index.html", learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren", ) @@ -385,38 +355,106 @@ def create_circle_fahrzeug(lp, title="Fahrzeug"): 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", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-fz-04-rafael-fasel-wechselt-sein-auto-abschluss.zip/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) + LearningUnitFactory(title="Transfer", title_hidden=True, parent=circle) LearningContentTestFactory( - title=f"Fachcheck", + title="Fachcheck Fahrzeug", parent=circle, - content_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/fach-check-fahrzeug-xapi-LqpAWv1J/index.html", + description=RichText( + "

Teste dein Wissen mit dem Fachcheck. Der Test kann nur einmal durchgeführt werden.

" + ), + checkbox_text="Hiermit bestätige ich, dass ich die Anweisungen verstanden habe und den Test durchführen möchte.", + content_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/fachcheck-fahrzeug-xapi-LFv8YiyM/index.html#/", ) - LearningContentPlaceholderFactory( + LearningContentAssignmentFactory( title="Reflexion", + assignment_type="REFLECTION", parent=circle, - ) + content_assignment=Assignment.objects.get( + slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" + ), + ), LearningContentFeedbackFactory( parent=circle, ) -def create_circle_rechtsstreitigkeiten(lp, title="Rechtsstreitigkeiten"): +def create_circle_haushalt(lp, title="Haushalt"): 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", + LearningContentPlaceholderFactory( + title="Verschaffe dir einen Überblick", + parent=circle, + ) + 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 und Claudia ziehen zusammen - Einstieg", + parent=circle, + category_name="Haushalt", + competence_id="V1", # todo: fix + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-hh-01-rafael-und-claudia-ziehen-zusammen-einstieg.zip/index.html", + learning_unit_title="Gesprächsvorbereitung und -einstieg", + ) + + LearningSequenceFactory(title="Analyse", parent=circle) + create_standard_learning_unit( + "Rafael und Claudia ziehen zusammen - Analyse", + parent=circle, + category_name="Haushalt", + competence_id="V1", # todo: fix + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-hh-02-rafael-und-claudia-ziehen-zusammen-analyse.zip/index.html", + learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation", + ) + + LearningSequenceFactory(title="Lösung", parent=circle) + create_standard_learning_unit( + "Rafael und Claudia ziehen zusammen - Lösung", + parent=circle, + category_name="Haushalt", + competence_id="V1", # todo: fix + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-hh-03-rafael-und-claudia-ziehen-zusammen-losung.zip/index.html", + learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung", + ) + + LearningSequenceFactory(title="Abschluss", parent=circle) + create_standard_learning_unit( + "Rafael und Claudia ziehen zusammen - Abschluss", + parent=circle, + category_name="Haushalt", + competence_id="V1", # todo: fix + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-hh-04-rafael-und-claudia-ziehen-zusammen-abschluss.zip/index.html", + learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung", + ) + + create_learning_sequence_transfer(circle, title="Haushalt") + + +def create_circle_rechtsstreitigkeiten(lp, title="Rechtsstreitigkeiten"): + circle = CircleFactory( + title=title, + parent=lp, + description=VV_CIRCLE_GOALS["rechtsstreitigkeiten"]["description"], + goals=VV_CIRCLE_GOALS["rechtsstreitigkeiten"]["goals"], + ) + 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, - content_url="https://player.vimeo.com/video/772512710?h=30f912f15a", - description="Willkommen im Lehrgang Versicherungsvermitler VBV", ) LearningContentMediaLibraryFactory( title=f"Mediathek {title}", @@ -430,7 +468,7 @@ def create_circle_rechtsstreitigkeiten(lp, title="Rechtsstreitigkeiten"): 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", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-rs-00-rafael-fasel-hat-arger-mit-seinem-vermieter.zip/index.html", learning_unit_title="Terminvereinbarung, Vorbereitung und Gesprächseröffnung", ) @@ -441,14 +479,14 @@ def create_circle_reisen(lp, title="Reisen"): circle = CircleFactory( title=title, parent=lp, + description=VV_CIRCLE_GOALS["reisen"]["description"], + goals=VV_CIRCLE_GOALS["reisen"]["goals"], ) LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start") - LearningUnitFactory(title="Einführung", parent=circle) - LearningContentVideoFactory( - title="Verschaff dir einen Überblick", + LearningUnitFactory(title="Einführung", parent=circle, title_hidden=True) + LearningContentPlaceholderFactory( + title="Verschaffe 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}", @@ -462,7 +500,7 @@ def create_circle_reisen(lp, title="Reisen"): 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", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-re-01-emma-und-ayla-campen-durch-amerika-einstieg.zip/index.html", learning_unit_title="Terminvereinbarung, Vorbereitung und Gesprächseröffnung", ) @@ -472,7 +510,7 @@ def create_circle_reisen(lp, title="Reisen"): 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", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-re-02-emma-und-ayla-campen-durch-amerika-analyse.zip/index.html", learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation", ) @@ -482,7 +520,7 @@ def create_circle_reisen(lp, title="Reisen"): 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", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-re-03-emma-und-ayla-campen-durch-amerika-losung.zip/index.html", learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren", ) @@ -492,12 +530,30 @@ def create_circle_reisen(lp, title="Reisen"): 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", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-re-04-emma-und-ayla-campen-durch-amerika-abschluss.zip/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?" + LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end") + LearningUnitFactory(title="Transfer", title_hidden=True, parent=circle) + LearningContentPlaceholderFactory( + title=f"Auswandern", + parent=circle, + ) + LearningContentPlaceholderFactory( + title=f"Fachcheck Reisen", + parent=circle, + ) + LearningContentAssignmentFactory( + title="Reflexion", + assignment_type="REFLECTION", + parent=circle, + content_assignment=Assignment.objects.get( + slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" + ), + ), + LearningContentFeedbackFactory( + parent=circle, ) @@ -505,14 +561,15 @@ def create_circle_einkommenssicherung(lp, title="Einkommenssicherung"): circle = CircleFactory( title=title, parent=lp, + description=VV_CIRCLE_GOALS["einkommenssicherung"]["description"], + goals=VV_CIRCLE_GOALS["einkommenssicherung"]["goals"], ) + course_slug = lp.slug.replace("-lp", "") LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start") - LearningUnitFactory(title="Einführung", parent=circle) - LearningContentVideoFactory( - title="Verschaff dir einen Überblick", + LearningUnitFactory(title="Einführung", parent=circle, title_hidden=True) + LearningContentPlaceholderFactory( + title="Verschaffe 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}", @@ -526,7 +583,7 @@ def create_circle_einkommenssicherung(lp, title="Einkommenssicherung"): 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", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-ek-01-patrizia-marco-sichern-sich-ab-einstieg.zip/index.html", learning_unit_title="Terminvereinbarung, Vorbereitung und Gesprächseröffnung", ) @@ -536,7 +593,7 @@ def create_circle_einkommenssicherung(lp, title="Einkommenssicherung"): 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", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-ek-02-patrizia-marco-sichern-sich-ab-analyse.zip/index.html", learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation", ) @@ -546,7 +603,7 @@ def create_circle_einkommenssicherung(lp, title="Einkommenssicherung"): 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", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-ek-03-patrizia-marco-sichern-sich-ab-losung.zip/index.html", learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren", ) @@ -556,13 +613,446 @@ def create_circle_einkommenssicherung(lp, title="Einkommenssicherung"): 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", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-ek-04-patrizia-marco-sichern-sich-ab-abschluss.zip/index.html", + learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung", + ) + LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end") + LearningUnitFactory(title="Transfer", title_hidden=True, parent=circle) + LearningContentAssignmentFactory( + title="Heirat: Was ändert sich", + parent=circle, + content_assignment=Assignment.objects.get( + slug__startswith=f"{course_slug}-assignment-heirat-was-ändert-sich" + ), + ), + LearningContentPlaceholderFactory( + title=f"Familienmanagerin", + parent=circle, + ) + LearningContentPlaceholderFactory( + title="Fachcheck Einkommenssicherung", + parent=circle, + ) + LearningContentAssignmentFactory( + title="Reflexion", + assignment_type="REFLECTION", + parent=circle, + content_assignment=Assignment.objects.get( + slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" + ), + ), + LearningContentFeedbackFactory( + parent=circle, + ) + + +def create_circle_wohneigentum(lp, title="Wohneigentum"): + 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, + ) + LearningContentMediaLibraryFactory( + title=f"Mediathek {title}", + parent=circle, + content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}", + ) + + LearningSequenceFactory(title="Wohneigentum", parent=circle) + LearningUnitFactory(title="Immobilien versichern bei Kauf und Umbau", parent=circle) + LearningContentPlaceholderFactory( + title="Patrizia und Marco kaufen ein Haus", + parent=circle, + ) + LearningContentPlaceholderFactory( + title="Selbsteinschätzung", + parent=circle, + ) + + LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end") + LearningUnitFactory(title="Transfer", title_hidden=True, parent=circle) + LearningContentPlaceholderFactory( + title="Wohneigentum", + parent=circle, + ) + LearningContentPlaceholderFactory( + title="Fachcheck Wohneigentum", + parent=circle, + ) + LearningContentAssignmentFactory( + title="Reflexion", + assignment_type="REFLECTION", + parent=circle, + content_assignment=Assignment.objects.get( + slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" + ), + ), + LearningContentFeedbackFactory( + parent=circle, + ) + + +def create_circle_pensionierung(lp, title="Pensionierung"): + circle = CircleFactory( + title=title, + parent=lp, + description=VV_CIRCLE_GOALS["pensionierung"]["description"], + goals=VV_CIRCLE_GOALS["pensionierung"]["goals"], + ) + LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start") + LearningUnitFactory(title="Einführung", parent=circle, title_hidden=True) + LearningContentPlaceholderFactory( + title="Verschaffe dir einen Überblick", + parent=circle, + ) + 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( + "Giulia und Davide planen ihre Pensionierung - Einstieg", + parent=circle, + category_name=title, + competence_id="V1", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-pe-01-giulia-und-davide-planen-ihre-pensionierung-einstieg.zip/index.html", + learning_unit_title="Gesprächsvorbereitung und -einstieg", + ) + + LearningSequenceFactory(title="Analyse", parent=circle) + create_standard_learning_unit( + "Giulia und Davide planen ihre Pensionierung - Analyse", + parent=circle, + category_name=title, + competence_id="V2", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-pe-02-giulia-und-davide-planen-ihre-pensionierung-analyse.zip/index.html", + learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation", + ) + + LearningSequenceFactory(title="Lösung", parent=circle) + create_standard_learning_unit( + "Giulia und Davide planen ihre Pensionierung - Lösung", + parent=circle, + category_name=title, + competence_id="V3", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-pe-03-giulia-und-davide-planen-ihre-pensionierung-losung.zip/index.html", + learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren", + ) + + LearningSequenceFactory(title="Abschluss", parent=circle) + create_standard_learning_unit( + "Giulia und Davide planen ihre Pensionierung - Abschluss", + parent=circle, + category_name=title, + competence_id="V4", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-pe-04-giulia-und-davide-planen-ihre-pensionierung-abschluss.zip/index.html", learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung", ) - create_learning_sequence_transfer( - circle, title="Einkommenssicherung", lc_praxis_title="Heirat: Was ändert sich?" + LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end") + LearningUnitFactory(title="Transfer", title_hidden=True, parent=circle) + LearningContentPlaceholderFactory( + title=f"Fachcheck Pensionierung", + parent=circle, ) + LearningContentAssignmentFactory( + title="Reflexion", + assignment_type="REFLECTION", + parent=circle, + content_assignment=Assignment.objects.get( + slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" + ), + ), + LearningContentFeedbackFactory( + parent=circle, + ) + + +def create_circle_erben(lp, title="Erben/Vererben"): + circle = CircleFactory( + title=title, + parent=lp, + description=VV_CIRCLE_GOALS["erben"]["description"], + goals=VV_CIRCLE_GOALS["erben"]["goals"], + ) + LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start") + LearningUnitFactory(title="Einführung", parent=circle, title_hidden=True) + LearningContentPlaceholderFactory( + title="Verschaffe dir einen Überblick", + parent=circle, + ) + LearningContentMediaLibraryFactory( + title=f"Mediathek {title}", + parent=circle, + content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}", + ) + + LearningSequenceFactory(title="Erben/Vererben", parent=circle) + LearningUnitFactory( + title="Gesetzliche Erben, Pflichtteile, Testament", + title_hidden=True, + parent=circle, + ) + LearningContentPlaceholderFactory( + title=f"Guilia udn Davide machen sich Gedanken", + parent=circle, + ) + LearningContentPlaceholderFactory( + title=f"Selbsteinschtzung", + parent=circle, + ) + + LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end") + LearningUnitFactory(title="Transfer", title_hidden=True, parent=circle) + LearningContentPlaceholderFactory( + title=f"Hauskauf mit Erbvorbezug", + parent=circle, + ) + LearningContentPlaceholderFactory( + title=f"Fachcheck Erben/Vererben", + parent=circle, + ) + LearningContentAssignmentFactory( + title="Reflexion", + assignment_type="REFLECTION", + parent=circle, + content_assignment=Assignment.objects.get( + slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" + ), + ), + LearningContentFeedbackFactory( + parent=circle, + ) + + +def create_circle_gesundheit(lp, title="Gesundheit"): + circle = CircleFactory( + title=title, + parent=lp, + description=VV_CIRCLE_GOALS["gesundheit"]["description"], + goals=VV_CIRCLE_GOALS["gesundheit"]["goals"], + ) + course_slug = lp.slug.replace("-lp", "") + + LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start") + LearningUnitFactory(title="Einführung", parent=circle, title_hidden=True) + LearningContentPlaceholderFactory( + title="Verschaffe dir einen Überblick", + parent=circle, + ) + 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( + "Familie Babic erwartet Nachwuchs - Einstieg", + parent=circle, + category_name=title, + competence_id="V1", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-ges-01-familie-babic-erwartet-nachwuchs-einstieg.zip/index.html", + learning_unit_title="Gesprächsvorbereitung und -einstieg", + ) + + LearningSequenceFactory(title="Analyse", parent=circle) + create_standard_learning_unit( + "Familie Babic erwartet Nachwuchs - Analyse", + parent=circle, + category_name=title, + competence_id="V2", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-ges-02-familie-babic-erwartet-nachwuchs-analyse.zip/index.html", + learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation", + ) + + LearningSequenceFactory(title="Lösung", parent=circle) + create_standard_learning_unit( + "Familie Babic erwartet Nachwuchs - Lösung", + parent=circle, + category_name=title, + competence_id="V3", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-ges-03-familie-babic-erwartet-nachwuchs-losung.zip/index.html", + learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren", + ) + + LearningSequenceFactory(title="Abschluss", parent=circle) + create_standard_learning_unit( + "Familie Babic erwartet Nachwuchs - Abschluss", + parent=circle, + category_name=title, + competence_id="V4", + wbt_url="https://courses.myvbv.iterativ.ch/courses/de-ges-04-familie-babic-erwartet-nachwuchs-abschluss.zip/index.html", + learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung", + ) + LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end") + LearningUnitFactory(title="Transfer", title_hidden=True, parent=circle) + LearningContentAssignmentFactory( + title="Heirat: Was ändert sich", + parent=circle, + content_assignment=Assignment.objects.get( + slug__startswith=f"{course_slug}-assignment-krankenversicherung-passt-die-lösung-noch" + ), + ), + LearningContentPlaceholderFactory( + title=f"Fachcheck Gesundheit", + parent=circle, + ) + LearningContentAssignmentFactory( + title="Reflexion", + assignment_type="REFLECTION", + parent=circle, + content_assignment=Assignment.objects.get( + slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" + ), + ), + LearningContentFeedbackFactory( + parent=circle, + ) + + +def create_circle_sparen(lp, title="Sparen"): + circle = CircleFactory( + title=title, + parent=lp, + description=VV_CIRCLE_GOALS["sparen"]["description"], + goals=VV_CIRCLE_GOALS["sparen"]["goals"], + ) + LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start") + LearningUnitFactory(title="Einführung", title_hidden=True, parent=circle) + LearningContentPlaceholderFactory( + title="Verschaffe dir einen Überblick", + parent=circle, + ) + LearningContentMediaLibraryFactory( + title="Mediathek", + parent=circle, + content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}", + ) + + LearningSequenceFactory(title="Sparen", parent=circle) + LearningUnitFactory( + title="Sparinstrumente, Idee und Funktionsweise von Anlagefonds", parent=circle + ) + LearningContentPlaceholderFactory( + title="Familie Babic spart auf ein Ziel", + parent=circle, + ) + LearningContentPlaceholderFactory( + title="Selbsteinschätzung", + parent=circle, + ) + + create_learning_sequence_transfer(circle, "Sparen") + + +def create_circle_selbstaendigkeit(lp, title="Selbstständigkeit"): + circle = CircleFactory( + title=title, + parent=lp, + description=VV_CIRCLE_GOALS["selbstständigkeit"]["description"], + goals=VV_CIRCLE_GOALS["selbstständigkeit"]["goals"], + ) + LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start") + LearningUnitFactory(title="Einführung", title_hidden=True, parent=circle) + LearningContentPlaceholderFactory( + title="Verschaffe dir einen Überblick", + parent=circle, + ) + LearningContentMediaLibraryFactory( + title="Mediathek", + parent=circle, + content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}", + ) + + LearningSequenceFactory(title="Selbstständigkeit", parent=circle) + LearningUnitFactory(title="Selbsständigerwerbende versichern", parent=circle) + LearningContentPlaceholderFactory( + title="Patrizia Feller macht sich selbstständig", + parent=circle, + ) + LearningContentPlaceholderFactory( + title="Selbsteinschätzung", + parent=circle, + ) + + create_learning_sequence_transfer(circle, "Selbstständigkeit") + + +def create_circle_kmu(lp, title="KMU"): + circle = CircleFactory( + title=title, + parent=lp, + description=VV_CIRCLE_GOALS["kmu"]["description"], + goals=VV_CIRCLE_GOALS["kmu"], + ) + LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start") + LearningUnitFactory(title="Einführung", parent=circle, title_hidden=True) + LearningContentPlaceholderFactory( + title="Verschaffe dir einen Überblick", + parent=circle, + ) + LearningContentMediaLibraryFactory( + title=f"Mediathek {title}", + parent=circle, + content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}", + ) + + LearningSequenceFactory(title="Einstieg", parent=circle) + LearningUnitFactory(title="Gesprächsvorbereitung und -einstieg", parent=circle) + LearningContentPlaceholderFactory( + title="Anne Fleur übernimmt den Blumenladen - Einstieg", + parent=circle, + ) + LearningContentPlaceholderFactory( + title="Selbsteinschätzung", + parent=circle, + ) + + LearningSequenceFactory(title="Analyse", parent=circle) + LearningUnitFactory(title="Bedarfsanalyse, Ist- und Soll-Situation", parent=circle) + LearningContentPlaceholderFactory( + title="Anne Fleur übernimmt den Blumenladen - Analyse", + parent=circle, + ) + LearningContentPlaceholderFactory( + title="Selbsteinschätzung", + parent=circle, + ) + + LearningSequenceFactory(title="Lösung", parent=circle) + LearningUnitFactory( + title="Lösungsvorschlag erarbeiten und präsentieren", parent=circle + ) + LearningContentPlaceholderFactory( + title="Anne Fleur übernimmt den Blumenladen - Lösung", + parent=circle, + ) + LearningContentPlaceholderFactory( + title="Selbsteinschätzung", + parent=circle, + ) + + LearningSequenceFactory(title="Abschluss", parent=circle) + LearningUnitFactory( + title="Gesprächszusammenfassung, Abschluss und Nachbereitung", parent=circle + ) + LearningContentPlaceholderFactory( + title="Anne Fleur übernimmt den Blumenladen - Abschluss", + parent=circle, + ) + LearningContentPlaceholderFactory( + title="Selbsteinschätzung", + parent=circle, + ) + create_learning_sequence_transfer(circle, "KMU") def create_circle_standard_small( @@ -685,145 +1175,9 @@ def setup_circle_factory_kwargs(title, lp, goals, description): "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, @@ -842,9 +1196,9 @@ def create_circle_pruefungsvorbereitung(lp, title="Prüfungsvorbereitung"): ) LearningSequenceFactory(title="Aufbau", parent=circle) - LearningUnitFactory(title="Aufbau und Struktur", parent=circle) + LearningUnitFactory(title="Aufbau", parent=circle, title_hidden=True) LearningContentPlaceholderFactory( - title="Unknown ???", + title="Aufbau und Struktur", parent=circle, ) @@ -948,7 +1302,7 @@ def create_standard_learning_unit( 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) + LearningUnitFactory(title="Transfer", title_hidden=True, parent=parent) if lc_praxis_title: LearningContentPlaceholderFactory( title=lc_praxis_title, @@ -958,11 +1312,15 @@ def create_learning_sequence_transfer(parent, title, lc_praxis_title=None): title=f"Fachcheck {title}", parent=parent, ) - LearningContentPlaceholderFactory( + LearningContentAssignmentFactory( title="Reflexion", + assignment_type="REFLECTION", parent=parent, - ) - LearningContentPlaceholderFactory( + content_assignment=Assignment.objects.get( + slug__startswith=f"versicherungsvermittler-in-assignment-reflexion" + ), + ), + LearningContentFeedbackFactory( parent=parent, ) diff --git a/server/vbv_lernwelt/learnpath/vv_circle_goals.py b/server/vbv_lernwelt/learnpath/vv_circle_goals.py index 46900747..26e0808a 100644 --- a/server/vbv_lernwelt/learnpath/vv_circle_goals.py +++ b/server/vbv_lernwelt/learnpath/vv_circle_goals.py @@ -9,142 +9,544 @@ class GoalsType(Enum): VV_CIRCLE_GOALS = { "basis": { - "description": "In diesem Circle erfährst du wie der Lehrgang aufgebaut ist. Zudem lernst du die " - "wichtigsten Grundlagen, damit du erfolgreich mit deinem Lernpfad und in deinem Job " - "(durch-)starten kannst.", - "goals": [], + "description": "In diesem Circle erfährst du wie der Lehrgang aufgebaut ist. Zudem lernst du die wichtigsten Grundlagen, damit du erfolgreich mit deinem Lernpfad (durch-)starten kannst.", + "goals": """ +

In diesem Circle erfährst du wie der Lehrgang aufgebaut ist. Zudem lernst du die wichtigsten Grundlagen, damit du erfolgreich mit deinem Lernpfad (durch-)starten kannst.

+ +

Du baust das Grundlagenwissen für die folgenden Themenfelder auf:

+ + +

Du arbeitest an folgenden Leistungskriterien aus dem Qualifikationsprofil:

+

Arbeitsalltag/Lerneinheit: «Lucas Auftritt in den sozialen Medien»

+

Ich bin fähig, …

+