282 lines
10 KiB
Python
282 lines
10 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.assignment.models import Assignment
|
|
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.tests.learning_path_factories import (
|
|
CircleFactory,
|
|
LearningContentAssignmentFactory,
|
|
LearningContentAttendanceCourseFactory,
|
|
LearningContentFeedbackFactory,
|
|
LearningContentMediaLibraryFactory,
|
|
LearningContentPlaceholderFactory,
|
|
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="1. Lehrjahr", is_visible=True, parent=lp)
|
|
create_uk_circle(lp, title="Kickoff")
|
|
create_uk_circle(lp, title="Basis")
|
|
create_uk_circle_fahrzeug(lp)
|
|
create_uk_circle(lp, title="Haushalt Teil 1")
|
|
create_uk_circle(lp, title="Haushalt Teil 2")
|
|
|
|
TopicFactory(title="2. Lehrjahr", 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="3. Lehrjahr", 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(),
|
|
)
|
|
LearningSequenceFactory(
|
|
title="Vorbereitung", parent=circle, icon="it-icon-ls-start"
|
|
)
|
|
LearningUnitFactory(title="Vorbereitung", parent=circle)
|
|
LearningContentPlaceholderFactory(
|
|
title="Verschaffe dir einen Überblick",
|
|
parent=circle,
|
|
)
|
|
|
|
first_title = title.split()[0]
|
|
if first_title in [
|
|
"Haushalt",
|
|
"Reisen",
|
|
"Wohneigentum",
|
|
"KMU",
|
|
"Einkommenssicherung",
|
|
"Pensionierung",
|
|
"Gesundheit",
|
|
]:
|
|
LearningContentMediaLibraryFactory(
|
|
title=f"Handlungsfeld «{title}»",
|
|
parent=circle,
|
|
description=RichText(
|
|
f"<p>In der Mediathek unter dem Handlungsfeld «{title}» findest du alle relevanten Ressourcen für deine Fachkompetenzen.</p>"
|
|
f"<p>Wir empfehlen dir vor der Absolvierung der weiteren Lerneinheiten dich in die Thematik einzulesen.</p>"
|
|
),
|
|
content_url=f"/course/überbetriebliche-kurse/media/category/{slugify(first_title)}",
|
|
)
|
|
else:
|
|
LearningContentMediaLibraryFactory(
|
|
title=f"Handlungsfeld «{title}»",
|
|
parent=circle,
|
|
description=RichText(
|
|
f"<p>In der Mediathek unter dem Handlungsfeld «{title}» findest du alle relevanten Ressourcen für deine Fachkompetenzen.</p>"
|
|
f"<p>Wir empfehlen dir vor der Absolvierung der weiteren Lerneinheiten dich in die Thematik einzulesen.</p>"
|
|
),
|
|
content_url=f"/course/überbetriebliche-kurse/media",
|
|
)
|
|
|
|
LearningContentPlaceholderFactory(
|
|
title="Vorbereitungsauftrag",
|
|
parent=circle,
|
|
)
|
|
LearningContentPlaceholderFactory(
|
|
title="Selbsteinschätzung",
|
|
parent=circle,
|
|
)
|
|
LearningSequenceFactory(title="Training", parent=circle)
|
|
LearningUnitFactory(title="Unterlagen", parent=circle)
|
|
LearningContentPlaceholderFactory(
|
|
title="Unterlagen für den Unterricht",
|
|
parent=circle,
|
|
)
|
|
LearningUnitFactory(title="Kompetenznachweis", parent=circle)
|
|
LearningContentPlaceholderFactory(
|
|
title="Wissens- und Verständnisfragen",
|
|
parent=circle,
|
|
)
|
|
LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
|
|
LearningUnitFactory(title="Transfer", parent=circle)
|
|
LearningContentPlaceholderFactory(
|
|
title="Reflexion",
|
|
parent=circle,
|
|
)
|
|
LearningContentFeedbackFactory(
|
|
parent=circle,
|
|
)
|
|
|
|
|
|
def create_uk_circle_fahrzeug(lp, title="Fahrzeug"):
|
|
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(),
|
|
)
|
|
LearningSequenceFactory(
|
|
title="Vorbereitung", parent=circle, icon="it-icon-ls-start"
|
|
)
|
|
LearningUnitFactory(title="Vorbereitung", parent=circle)
|
|
LearningContentPlaceholderFactory(
|
|
title="Verschaffe dir einen Überblick",
|
|
parent=circle,
|
|
)
|
|
LearningContentMediaLibraryFactory(
|
|
title=f"Handlungsfeld «{title}»",
|
|
parent=circle,
|
|
description=RichText(
|
|
f"<p>In der Mediathek unter dem Handlungsfeld «{title}» findest du alle relevanten Ressourcen für deine Fachkompetenzen.</p>"
|
|
f"<p>Wir empfehlen dir vor der Absolvierung der weiteren Lerneinheiten dich in die Thematik einzulesen.</p>"
|
|
),
|
|
content_url=f"/course/überbetriebliche-kurse/media/category/{slugify(title)}",
|
|
)
|
|
LearningContentPlaceholderFactory(
|
|
title="Vorbereitungsauftrag",
|
|
parent=circle,
|
|
)
|
|
LearningSequenceFactory(title="Training", parent=circle)
|
|
LearningUnitFactory(title="Unterlagen", parent=circle)
|
|
LearningContentPlaceholderFactory(
|
|
title="Unterlagen für den Unterricht",
|
|
parent=circle,
|
|
)
|
|
LearningUnitFactory(title="Präsenzkurs", parent=circle)
|
|
LearningContentAttendanceCourseFactory(
|
|
title="Präsenzkurs Fahrzeug",
|
|
parent=circle,
|
|
)
|
|
LearningUnitFactory(title="Kompetenznachweis", parent=circle)
|
|
LearningContentPlaceholderFactory(
|
|
title="Wissens- und Verständnisfragen",
|
|
parent=circle,
|
|
)
|
|
LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
|
|
LearningUnitFactory(title="Transfer", parent=circle)
|
|
LearningContentPlaceholderFactory(
|
|
title="Reflexion",
|
|
parent=circle,
|
|
)
|
|
LearningContentAssignmentFactory(
|
|
title="Überprüfen einer Motorfahrzeug-Versicherungspolice",
|
|
parent=circle,
|
|
content_assignment=Assignment.objects.get(
|
|
slug__startswith="überbetriebliche-kurse-assignment-überprüfen-einer-motorfahrzeugs"
|
|
),
|
|
),
|
|
LearningContentFeedbackFactory(
|
|
parent=circle,
|
|
)
|