445 lines
17 KiB
Python
445 lines
17 KiB
Python
import wagtail_factories
|
|
from django.conf import settings
|
|
from django.core.management import call_command
|
|
from wagtail.models import Site, Page, Locale
|
|
from wagtail_localize.models import LocaleSynchronization
|
|
|
|
from vbv_lernwelt.core.admin import User
|
|
from vbv_lernwelt.course.consts import COURSE_VERSICHERUNGSVERMITTLERIN_ID
|
|
from vbv_lernwelt.course.models import CoursePage, CourseCategory
|
|
from vbv_lernwelt.learnpath.tests.learning_path_factories import LearningPathFactory, TopicFactory, CircleFactory, \
|
|
LearningSequenceFactory, LearningContentFactory, VideoBlockFactory, ResourceBlockFactory, \
|
|
ExerciseBlockFactory, DocumentBlockFactory, LearningUnitFactory, AssignmentBlockFactory, BookBlockFactory, \
|
|
MediaLibraryBlockFactory, OnlineTrainingBlockFactory, TestBlockFactory
|
|
|
|
|
|
def create_circle(title, learning_path):
|
|
return CircleFactory(
|
|
title=title,
|
|
parent=learning_path,
|
|
description="""
|
|
Nach dem Gespräch werten sie die Analyse aus und erstellen mit den
|
|
zur Verfügung stehenden Systemen formal korrekte Lösungsvorschläge bzw.
|
|
Ausschreibungen. Je nach Komplexität der Situation ziehen sie die nötigen
|
|
Fachspezialisten bei.
|
|
""",
|
|
job_situations=[
|
|
('job_situation', 'Absicherung der Familie'),
|
|
('job_situation', 'Prämien einsparen'),
|
|
('job_situation', 'Deckung optimieren'),
|
|
('job_situation', 'Auto kaufen'),
|
|
('job_situation', 'Fahrzeugwechsel'),
|
|
('job_situation', 'Pensionerung inklusive Variante Frühpensionierung'),
|
|
('job_situation', 'Reisen'),
|
|
],
|
|
goals=[
|
|
('goal', '... die heutige Versicherungssituation von Privat- oder Geschäftskunden einzuschätzen.'),
|
|
('goal', '... deinem Kunden einen ungenügenden oder übermässigen Versicherungsschutz aufzuzeigen.'),
|
|
('goal', '... deinem Kunden zu helfen, sein Optimierungspotential voll auszuschöpfen.'),
|
|
('goal', '... deinem Kunden seine optimale Lösung aufzuzeigen'),
|
|
],
|
|
experts=[
|
|
('person', {'last_name': 'Huggel', 'first_name': 'Patrizia', 'email': 'patrizia.huggel@example.com'}),
|
|
]
|
|
)
|
|
|
|
|
|
def create_circle_children(circle, title):
|
|
LearningSequenceFactory(title='Starten', parent=circle, icon='it-icon-ls-start')
|
|
LearningContentFactory(
|
|
title=f'Einleitung Circle "{title}"',
|
|
parent=circle,
|
|
minutes=15,
|
|
contents=[('video', VideoBlockFactory(
|
|
url='https://www.youtube.com/embed/qhPIfxS2hvI',
|
|
description='In dieser Circle zeigt dir ein Fachexperte anhand von Kundensituationen, wie du erfolgreich'
|
|
'den Kundenbedarf ermitteln, analysieren, priorisieren und anschliessend zusammenfassen kannst.'
|
|
))]
|
|
)
|
|
|
|
LearningSequenceFactory(title='Beobachten', parent=circle, icon='it-icon-ls-watch')
|
|
lu = LearningUnitFactory(
|
|
title='Absicherung der Familie',
|
|
parent=circle,
|
|
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, title='Einkommenssicherung')
|
|
)
|
|
LearningContentFactory(
|
|
title='Ermittlung des Kundenbedarfs',
|
|
parent=circle,
|
|
minutes=30,
|
|
contents=[('video', VideoBlockFactory(
|
|
description='Die Ermittlung des Kundenbedarfs muss in einem eingehenden Gespräch herausgefunden werden. Höre dazu auch diesen Podcast an.',
|
|
url='https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/325190984&color=%23ff5500&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true&visual=true',
|
|
))]
|
|
)
|
|
if circle.title == 'Einstieg':
|
|
LearningContentFactory(
|
|
title='Einstieg ins Gespräch',
|
|
parent=circle,
|
|
minutes=15,
|
|
contents=[('video', VideoBlockFactory(
|
|
url='https://onedrive.live.com/embed?cid=26E4A934B79DCE5E&resid=26E4A934B79DCE5E%2153350&authkey=AId6i7z_X8l2fHw',
|
|
description='In dieser Circle zeigt dir ein Fachexperte anhand von Kundensituationen, wie du erfolgreich'
|
|
'den Kundenbedarf ermitteln, analysieren, priorisieren und anschliessend zusammenfassen kannst.'
|
|
))]
|
|
)
|
|
|
|
if circle.title == 'Analyse':
|
|
LearningContentFactory(
|
|
title='Kundenanalyse',
|
|
parent=circle,
|
|
minutes=15,
|
|
contents=[('video', VideoBlockFactory(
|
|
url= "https://onedrive.live.com/embed?cid=26E4A934B79DCE5E&resid=26E4A934B79DCE5E%2153352&authkey=ABAdnARrD5VsIG8",
|
|
description=''
|
|
))]
|
|
)
|
|
|
|
|
|
LearningContentFactory(
|
|
title='Kundenbedürfnisse erkennen',
|
|
parent=circle,
|
|
minutes=30,
|
|
contents=[('exercise', ExerciseBlockFactory())]
|
|
)
|
|
|
|
LearningContentFactory(
|
|
title='Was braucht eine Familie?',
|
|
parent=circle,
|
|
minutes=60,
|
|
contents=[('exercise', ExerciseBlockFactory(url='/static/media/web_based_trainings/story-01-a-01-patrizia-marco-sichern-sich-ab-einstieg/scormcontent/index.html'
|
|
))]
|
|
|
|
)
|
|
|
|
LearningSequenceFactory(title='Anwenden', parent=circle, icon='it-icon-ls-apply')
|
|
lu = LearningUnitFactory(
|
|
title='Prämien einsparen',
|
|
parent=circle,
|
|
)
|
|
LearningContentFactory(
|
|
title='Versicherungsbedarf für Familien',
|
|
parent=circle,
|
|
minutes=60,
|
|
contents=[('exercise', ExerciseBlockFactory())]
|
|
)
|
|
LearningContentFactory(
|
|
title='Alles klar?',
|
|
parent=circle,
|
|
minutes=60,
|
|
contents=[('exercise', ExerciseBlockFactory())]
|
|
)
|
|
|
|
lu = LearningUnitFactory(
|
|
title='Sich selbständig machen',
|
|
parent=circle,
|
|
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, title='Selbständigkeit')
|
|
)
|
|
LearningContentFactory(
|
|
title='GmbH oder AG',
|
|
parent=circle,
|
|
minutes=120,
|
|
contents=[('video', VideoBlockFactory())]
|
|
)
|
|
LearningContentFactory(
|
|
title='Tiertherapie Patrizia Feller',
|
|
parent=circle,
|
|
minutes=120,
|
|
contents=[('exercise', ExerciseBlockFactory())]
|
|
)
|
|
|
|
lu = LearningUnitFactory(
|
|
title='Auto verkaufen',
|
|
parent=circle,
|
|
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, title='Fahrzeug')
|
|
)
|
|
LearningContentFactory(
|
|
title='Motorfahrzeugversicherung',
|
|
parent=circle,
|
|
minutes=240,
|
|
contents=[('assignment', AssignmentBlockFactory())]
|
|
)
|
|
LearningContentFactory(
|
|
title='Nora kauft sich ein neues Auto',
|
|
parent=circle,
|
|
minutes=60,
|
|
contents=[('resource', ResourceBlockFactory())]
|
|
)
|
|
LearningContentFactory(
|
|
title='Ermittlung des Kundenbedarfs',
|
|
parent=circle,
|
|
minutes=120,
|
|
contents=[('document', DocumentBlockFactory())]
|
|
)
|
|
LearningContentFactory(
|
|
title='Motorfahrzeug kaufen',
|
|
parent=circle,
|
|
minutes=120,
|
|
contents=[('exercise', ExerciseBlockFactory(url='/static/media/web_based_trainings/training-04-a-01-rafael-fasel-wechselt-sein-auto-einstieg/scormcontent/index.html'))]
|
|
)
|
|
|
|
lu = LearningUnitFactory(
|
|
title='Pensionierung',
|
|
parent=circle,
|
|
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, title='Pensionierung')
|
|
)
|
|
LearningContentFactory(
|
|
title='3-Säulen-Prinzip',
|
|
parent=circle,
|
|
minutes=240,
|
|
contents=[('test', TestBlockFactory())]
|
|
)
|
|
LearningContentFactory(
|
|
title='Altersvorsorge',
|
|
parent=circle,
|
|
minutes=240,
|
|
contents=[('test', TestBlockFactory())]
|
|
)
|
|
LearningContentFactory(
|
|
title='AHV',
|
|
parent=circle,
|
|
minutes=120,
|
|
contents=[('document', DocumentBlockFactory())]
|
|
)
|
|
LearningContentFactory(
|
|
title='Altersvorsorge planen',
|
|
parent=circle,
|
|
minutes=120,
|
|
contents=[('exercise', ExerciseBlockFactory())]
|
|
)
|
|
|
|
lu = LearningUnitFactory(
|
|
title='Reisen',
|
|
parent=circle,
|
|
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, title='Reisen')
|
|
)
|
|
LearningContentFactory(
|
|
title='Reiseversicherung',
|
|
parent=circle,
|
|
minutes=240,
|
|
contents=[('exercise', ExerciseBlockFactory())]
|
|
)
|
|
LearningContentFactory(
|
|
title='Sorgenfrei reisen',
|
|
parent=circle,
|
|
minutes=120,
|
|
contents=[('exercise', ExerciseBlockFactory(
|
|
url='/static/media/web_based_trainings/story-06-a-01-emma-und-ayla-campen-durch-amerika-einstieg/scormcontent/index.html'))]
|
|
)
|
|
|
|
lu = LearningUnitFactory(
|
|
title='Haushalt',
|
|
parent=circle,
|
|
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, title='Haushalt')
|
|
)
|
|
LearningContentFactory(
|
|
title='Privathaftpflicht',
|
|
parent=circle,
|
|
minutes=240,
|
|
contents=[('media_library', MediaLibraryBlockFactory())]
|
|
)
|
|
LearningContentFactory(
|
|
title='Zusatzversicherung',
|
|
parent=circle,
|
|
minutes=120,
|
|
contents=[('document', DocumentBlockFactory())]
|
|
)
|
|
LearningContentFactory(
|
|
title='Einen eigenen Haushalt führen',
|
|
parent=circle,
|
|
minutes=120,
|
|
contents=[('exercise', ExerciseBlockFactory())]
|
|
)
|
|
|
|
LearningSequenceFactory(title='Üben', parent=circle, icon='it-icon-ls-practice')
|
|
lu = LearningUnitFactory(
|
|
title='Kind zieht von zu Hause aus',
|
|
parent=circle,
|
|
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, title='Einkommenssicherung')
|
|
)
|
|
LearningContentFactory(
|
|
title='Hausrat',
|
|
parent=circle,
|
|
minutes=120,
|
|
contents=[('online_training', OnlineTrainingBlockFactory())]
|
|
)
|
|
LearningContentFactory(
|
|
title='Privathaftpflicht',
|
|
parent=circle,
|
|
minutes=60,
|
|
contents=[('exercise', ExerciseBlockFactory())]
|
|
)
|
|
LearningContentFactory(
|
|
title='Kind zieht von zu Hause wirklich aus',
|
|
parent=circle,
|
|
minutes=60,
|
|
contents=[('exercise', ExerciseBlockFactory())]
|
|
)
|
|
|
|
LearningSequenceFactory(title='Testen', parent=circle, icon='it-icon-ls-test')
|
|
lu = LearningUnitFactory(
|
|
title='Kind zieht von zu Hause aus "Testen"',
|
|
parent=circle,
|
|
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, title='Einkommenssicherung')
|
|
)
|
|
LearningContentFactory(
|
|
title='Das erwartet dich im Test',
|
|
parent=circle,
|
|
minutes=30,
|
|
contents=[('test', TestBlockFactory())]
|
|
)
|
|
LearningContentFactory(
|
|
title='Test durchführen',
|
|
parent=circle,
|
|
minutes=30,
|
|
contents=[('test', TestBlockFactory())]
|
|
)
|
|
|
|
LearningSequenceFactory(title='Vernetzen', parent=circle, icon='it-icon-ls-network')
|
|
LearningContentFactory(
|
|
title='Online Training',
|
|
parent=circle,
|
|
minutes=60,
|
|
contents=[('online_training', OnlineTrainingBlockFactory())]
|
|
)
|
|
|
|
LearningSequenceFactory(title='Beenden', parent=circle, icon='it-icon-ls-end')
|
|
LearningContentFactory(
|
|
title='Mehr darüber erfahren',
|
|
parent=circle,
|
|
minutes=30,
|
|
contents=[('book', BookBlockFactory())]
|
|
)
|
|
LearningContentFactory(
|
|
title='Circle "Analyse" abschliessen',
|
|
parent=circle,
|
|
minutes=30,
|
|
contents=[('document', DocumentBlockFactory())]
|
|
)
|
|
|
|
|
|
def create_default_learning_path(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()
|
|
|
|
# create_default_competences()
|
|
|
|
course_page = CoursePage.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID)
|
|
lp = LearningPathFactory(
|
|
title="Versicherungsvermittler/in",
|
|
parent=course_page,
|
|
)
|
|
|
|
TopicFactory(title="Basis", is_visible=False, parent=lp)
|
|
|
|
circle_basis = CircleFactory(
|
|
title="Basis",
|
|
parent=lp,
|
|
description="""
|
|
In diesem Circle erklären wir dir, wie der Lehrgang
|
|
Versicherungsvermittler / in " aufgebaut ist. Zudem vermitteln wir dir die wichtigsten Grundlagen,
|
|
damit erfolgreich mit deinem Lernpfad starten kannst.
|
|
""",
|
|
)
|
|
LearningSequenceFactory(title='Starten', parent=circle_basis, icon='it-icon-ls-start')
|
|
LearningContentFactory(
|
|
title='Einleitung Circle "Basis"',
|
|
parent=circle_basis,
|
|
minutes=15,
|
|
contents=[('video', VideoBlockFactory(
|
|
url='https://www.youtube.com/embed/qhPIfxS2hvI',
|
|
description='In dieser Circle zeigt dir ein Fachexperte anhand von Kundensituationen, wie du erfolgreich'
|
|
'den Kundenbedarf ermitteln, analysieren, priorisieren und anschliessend zusammenfassen kannst.'
|
|
))]
|
|
)
|
|
LearningSequenceFactory(title='Beenden', parent=circle_basis, icon='it-icon-ls-end')
|
|
LearningContentFactory(
|
|
title='Kompetenzprofil anschauen',
|
|
parent=circle_basis,
|
|
minutes=30,
|
|
contents=[('document', DocumentBlockFactory())]
|
|
)
|
|
LearningContentFactory(
|
|
title='Circle "Analyse" abschliessen',
|
|
parent=circle_basis,
|
|
minutes=30,
|
|
contents=[('document', DocumentBlockFactory())]
|
|
)
|
|
|
|
TopicFactory(title="Gewinnen von Kunden", parent=lp)
|
|
|
|
circle_gewinnen = CircleFactory(
|
|
title="Gewinnen",
|
|
parent=lp,
|
|
description="""
|
|
Versicherungsvermittlerinnen und -vermittler verfügen über
|
|
ein starkes Netzwerk, das sie gezielt pflegen und ausbauen. Sie beraten und betreuen ihre bestehenden Kundinnen und Kunden professionell und gewinnen so ihr Vertrauen. Dadurch schaffen sie die Basis für das Gewinnen
|
|
von neuen Kundinnen und Kunden. Versicherungsvermittlerinnen und -vermittler sprechen ihre bestehenden Kundinnen
|
|
und Kunden auf Weiterempfehlung an. So nutzen sie ihre
|
|
bestehenden Kontakte geschickt für das Anwerben von
|
|
Neukundinnen und -kunden.""",
|
|
goals=[
|
|
('goal', '... Bestehende Kunden so zu beraten, dass sie von diesen weiterempfohlen werden'),
|
|
('goal',
|
|
'... Geeignete Personen wie z.B. Garagisten, Architekten, Treuhänder auf die Vermittlung / Zusammenarbeit anzusprechen'),
|
|
('goal',
|
|
'... Verschiedene Datenquellen wie Internet, Telefonbuch, Handelszeitung, Baugesuche etc. Gezielt für die Gewinnung von Neukunden zu benützen'),
|
|
('goal',
|
|
'... Ein beliebiges Gespräch resp. Einen bestehenden Kontakt in die Richtung «Versicherung» zu lenken'),
|
|
('goal',
|
|
'... Das Thema Risiko und Sicherheit in einem Gespräch gezielt und auf die Situation des jeweiligen Gesprächspartners bezogen einfliessen zu lassen'),
|
|
('goal', '... Im täglichen Kontakt potenzielle Kundinnen und Kunden zu erkennen'),
|
|
],
|
|
)
|
|
create_circle_children(circle_gewinnen, 'Gewinnen')
|
|
|
|
TopicFactory(title="Beraten der Kunden", parent=lp)
|
|
|
|
circle_einstieg = create_circle('Einstieg', lp)
|
|
create_circle_children(circle_einstieg, 'Einstieg')
|
|
|
|
circle_analyse = create_circle('Analyse', lp)
|
|
create_circle_children(circle_analyse, 'Analyse')
|
|
|
|
circle_analyse = create_circle('Lösung', lp)
|
|
create_circle_children(circle_analyse, 'Lösung')
|
|
|
|
circle_analyse = create_circle('Abschluss', lp)
|
|
create_circle_children(circle_analyse, 'Abschluss')
|
|
|
|
TopicFactory(title="Betreuen und Ausbauen des Kundenstamms", parent=lp)
|
|
|
|
circle_analyse = create_circle('Betreuen', lp)
|
|
create_circle_children(circle_analyse, 'Betreuen')
|
|
|
|
TopicFactory(title="Prüfung", is_visible=True, parent=lp)
|
|
circle_analyse = create_circle('Prüfungsvorbereitung', lp)
|
|
create_circle_children(circle_analyse, 'Prüfungsvorbereitung')
|
|
|
|
# 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)
|