vbv/server/vbv_lernwelt/course/management/commands/create_uk_course.py

241 lines
8.3 KiB
Python

import wagtail_factories
from django.conf import settings
from django.core.management import call_command
from wagtail.models import Locale, Page, Site
from wagtail_localize.models import LocaleSynchronization
from vbv_lernwelt.core.admin import User
from vbv_lernwelt.course.consts import COURSE_UK, COURSE_UK_FR
from vbv_lernwelt.course.models import CoursePage
from vbv_lernwelt.learnpath.create_vv_learning_path import (
create_learning_content_beenden,
)
from vbv_lernwelt.learnpath.tests.learning_path_factories import (
CircleFactory,
LearningContentFactory,
LearningPathFactory,
LearningSequenceFactory,
LearningUnitFactory,
TopicFactory,
)
def create_uk_learning_path(course_id=COURSE_UK, 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="üK1", is_visible=True, parent=lp)
create_uk_circle(lp, title="Kickoff")
create_uk_circle(lp, title="Basis")
create_uk_circle(lp, title="Fahrzeug")
create_uk_circle(lp, title="Haushalt Teil 1")
create_uk_circle(lp, title="Haushalt Teil 2")
TopicFactory(title="üK2", is_visible=True, parent=lp)
create_uk_circle(lp, title="Reisen & Rechtsstreitigkeiten")
create_uk_circle(lp, title="Wohneigentum")
create_uk_circle(lp, title="KMU Teil 1")
create_uk_circle(lp, title="KMU Teil 2")
create_uk_circle(lp, title="3-Säulenkonzept")
create_uk_circle(lp, title="Einkommenssicherung (Invalidität)")
create_uk_circle(lp, title="Einkommenssicherung (Todesfall)")
create_uk_circle(lp, title="Pensionierung (Todesfall)")
TopicFactory(title="üK3", is_visible=True, parent=lp)
create_uk_circle(lp, title="Gesundheit")
create_uk_circle(lp, title="Prüfungsvorbereitung Teil 1")
create_uk_circle(lp, title="Prüfungsvorbereitung Teil 2")
# 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_uk_fr_learning_path(course_id=COURSE_UK_FR, 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="1ère année", is_visible=True, parent=lp)
create_uk_circle(lp, title="Coup d'envoi")
create_uk_circle(lp, title="Base")
create_uk_circle(lp, title="Véhicule")
create_uk_circle(lp, title="Budget Partie 1")
create_uk_circle(lp, title="Budget Partie 2")
TopicFactory(title="2ème année", is_visible=True, parent=lp)
create_uk_circle(lp, title="Voyages / Protection juridique")
create_uk_circle(lp, title="Proprieté du logement")
create_uk_circle(lp, title="PME Partie 1")
create_uk_circle(lp, title="PME Partie 2")
create_uk_circle(lp, title="Concept des 3")
create_uk_circle(lp, title="Garantie des revenus, Partie 1")
create_uk_circle(lp, title="Garantie des revenus, Partie 2")
create_uk_circle(lp, title="Retraite")
TopicFactory(title="3ème année", is_visible=True, parent=lp)
create_uk_circle(lp, title="Santé")
create_uk_circle(lp, title="Préparation à l'examen, Partie 1")
create_uk_circle(lp, title="Préparation à l'examen, Partie 2")
# 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_uk_circle(lp, title="Kickoff"):
circle = CircleFactory(
title=title,
parent=lp,
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.
""".strip(),
goal_description="In diesem Circle baust du Grundlagenwissen für die folgenden Themenfelder auf:",
goals=[
("goal", "Aufbau und Umgang mit dem Lernpfad"),
("goal", "Lerntechnik"),
("goal", "Arbeitstechnik"),
("goal", "Beraten und Verkaufen"),
("goal", "Versicherungswirtschaft"),
("goal", "Versicherungsrecht"),
],
job_situations=[],
)
LearningSequenceFactory(title="Start", parent=circle, icon="it-icon-ls-start")
LearningUnitFactory(title="Einführung", parent=circle)
LearningContentFactory(
title="Willkommen im üK",
parent=circle,
)
LearningUnitFactory(title="Arbeits- und Lerntechnik", parent=circle)
LearningContentFactory(
title="Mediathek",
parent=circle,
)
LearningContentFactory(
title="Luca organisiert seinen Arbeitsalltag",
parent=circle,
)
LearningContentFactory(
title="Luca legt sich seine Lernstrategie zurecht",
parent=circle,
)
LearningContentFactory(
title="Fachcheck Arbeits- und Lerntechnik",
parent=circle,
)
LearningSequenceFactory(title="Training", parent=circle, icon="it-icon-ls-watch")
LearningUnitFactory(title="Versicherung", parent=circle)
LearningContentFactory(
title="Mediathek",
parent=circle,
)
LearningContentFactory(
title="Luca startet durch",
parent=circle,
)
LearningContentFactory(
title="Fachcheck Allgemeines zu Versicherungen",
parent=circle,
)
LearningUnitFactory(title="Beratung und Verkauf", parent=circle)
LearningContentFactory(
title="Mediathek",
parent=circle,
)
LearningContentFactory(
title="Luca macht sich fit im Verkauf",
parent=circle,
)
LearningContentFactory(
title="Fachcheck Beratung und Verkauf",
parent=circle,
)
LearningSequenceFactory(
title="Kompetenznachweis", parent=circle, icon="it-icon-ls-watch"
)
LearningUnitFactory(title="Sozialer Auftritt", parent=circle)
LearningContentFactory(
title="Mediathek",
parent=circle,
)
LearningContentFactory(
title="Lerninhalt offen",
parent=circle,
)
LearningContentFactory(
title="Fachcheck Sozialer Auftritt",
parent=circle,
)
LearningSequenceFactory(
title="Nachbearbeitung", parent=circle, icon="it-icon-ls-watch"
)
LearningUnitFactory(title="Sozialer Auftritt", parent=circle)
LearningContentFactory(
title="Mediathek",
parent=circle,
)
LearningContentFactory(
title="Lerninhalt offen",
parent=circle,
)
LearningContentFactory(
title="Fachcheck Sozialer Auftritt",
parent=circle,
)
LearningSequenceFactory(title="Abschluss", parent=circle, icon="it-icon-ls-end")
LearningUnitFactory(title="Circle beenden", parent=circle)
create_learning_content_beenden(circle)