Merged in feature/fr-uk (pull request #33)

Add FR course
This commit is contained in:
Christian Cueni 2023-03-02 08:39:01 +00:00
commit 39bc70eff0
4 changed files with 314 additions and 80 deletions

View File

@ -4,7 +4,7 @@ from vbv_lernwelt.competence.factories import (
PerformanceCriteriaFactory,
)
from vbv_lernwelt.competence.models import CompetencePage
from vbv_lernwelt.course.consts import COURSE_UK
from vbv_lernwelt.course.consts import COURSE_UK, COURSE_UK_FR
from vbv_lernwelt.course.models import CoursePage
from vbv_lernwelt.learnpath.models import LearningPath, LearningUnit
@ -149,3 +149,145 @@ def create_uk_competence_profile(course_id=COURSE_UK):
slug=f"{slug_prefix}-circle-fahrzeug-lu-einführung"
),
)
def create_uk_fr_competence_profile(course_id=COURSE_UK_FR):
course_page = CoursePage.objects.get(course_id=course_id)
slug_prefix = course_page.get_children().exact_type(LearningPath).first().slug
competence_profile_page = CompetenceProfilePageFactory(
title="KompetenzNavi",
parent=course_page,
)
competences = [
{
"competence_id": "e4",
"title": "Betriebsbezogene Inhalte multimedial aufbereiten",
"items": [],
},
{
"competence_id": "c3",
"title": "Betriebliche Prozesse dokumentieren, koordinieren und umsetzen",
"items": [],
},
{
"competence_id": "e2",
"title": "Informationen im wirtschaftlichen und kaufmännischen Bereich recherchieren",
"items": [],
},
{
"competence_id": "d2",
"title": "Informations- und Beratungsgespräche mit Kunden oder Lieferanten führen",
"items": [],
},
{
"competence_id": "d3",
"title": "Betriebliche Prozesse dokumentieren, koordinieren und umsetzen",
"items": [],
},
{
"competence_id": "d1",
"title": "Anliegen von Kunden oder Lieferanten entgegennehmen",
"items": [],
},
]
for c in competences:
CompetencePageFactory(
parent=competence_profile_page,
competence_id=c["competence_id"],
title=c["title"],
items=[("item", i) for i in c["items"]],
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
),
competence_id="e4.pv.ük1",
title="Sie erläutern die Dienstleistungen des Betriebs. (K2)",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-einführung"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
),
competence_id="e4.pv.ük3",
title="Sie stellen die Wertschöpfungskette und die verschiedenen organisatorischen Bereiche ihres Betriebs dar. (K2).",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-einführung"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
),
competence_id="e4.pv.ük4",
title="Sie erläutern die relevanten rechtlichen Grundlagen ihrer Branche situationsgerecht. (K2)",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-einführung"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
),
competence_id="d2.pv.ük1",
title="Sie beschreiben die wichtigsten gesetzlichen Grundlagen im Versicherungsbereich umfassend. (K2)",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-einführung"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
),
competence_id="d2.pv.ük2",
title="Sie nennen die relevanten Dienstleistungen und Produkte im Versicherungsbereich. (K1)",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-einführung"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
),
competence_id="d2.pv.ük3",
title="Sie erklären die Leistungen und Produkte im Versicherungsbereich. (K2)",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-einführung"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
),
competence_id="d2.pv.ük4",
title="Sie erläutern die Prozesse und Abläufe im privaten Versicherungsbereich verständlich. (K2)",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-einführung"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
),
competence_id="c3.pv.ük7",
title="Sie erläutern die gesetzlichen Bestimmungen bei Schaden- und Leistungsfällen. (K2)",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-einführung"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
),
competence_id="c3.pv.ük11",
title="Sie beurteilen gängige Versicherungslösungen fachkundig. (K3)",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-einführung"
),
)

View File

@ -2,3 +2,4 @@ COURSE_TEST_ID = -1
COURSE_VERSICHERUNGSVERMITTLERIN_OLD_ID = -2
COURSE_UK = -3
COURSE_VERSICHERUNGSVERMITTLERIN_ID = -4
COURSE_UK_FR = -5

View File

@ -3,6 +3,7 @@ from wagtail.models import Page
from vbv_lernwelt.competence.create_uk_competence_profile import (
create_uk_competence_profile,
create_uk_fr_competence_profile,
)
from vbv_lernwelt.competence.create_vv_competence_profile import (
create_vv_competence_profile,
@ -15,6 +16,7 @@ from vbv_lernwelt.core.models import User
from vbv_lernwelt.course.consts import (
COURSE_TEST_ID,
COURSE_UK,
COURSE_UK_FR,
COURSE_VERSICHERUNGSVERMITTLERIN_ID,
COURSE_VERSICHERUNGSVERMITTLERIN_OLD_ID,
)
@ -23,6 +25,7 @@ from vbv_lernwelt.course.creators.versicherungsvermittlerin import (
create_versicherungsvermittlerin_with_categories,
)
from vbv_lernwelt.course.management.commands.create_uk_course import (
create_uk_fr_learning_path,
create_uk_learning_path,
)
from vbv_lernwelt.course.models import CourseSession, CourseSessionUser
@ -66,7 +69,7 @@ def command():
create_vv_new_learning_path()
create_default_media_library(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID)
# Überbetriebliche Kurse
# Überbetriebliche Kurse DE
create_versicherungsvermittlerin_with_categories(
course_id=COURSE_UK, title="Überbetriebliche Kurse"
)
@ -74,6 +77,14 @@ def command():
create_uk_competence_profile(course_id=COURSE_UK)
create_default_media_library(course_id=COURSE_UK)
# Überbetriebliche Kurse FR
create_versicherungsvermittlerin_with_categories(
course_id=COURSE_UK_FR, title="Course hors établissement"
)
create_uk_fr_learning_path(course_id=COURSE_UK_FR)
create_uk_fr_competence_profile(course_id=COURSE_UK_FR)
create_default_media_library(course_id=COURSE_UK_FR)
# test course
create_test_course()
@ -137,84 +148,111 @@ def command():
)
# course session Überbetriebliche Kurse Lehrjahr 1 - Region Bern
cs = CourseSession.objects.create(
course_id=COURSE_UK,
title="Überbetriebliche Kurse Lehrjahr 1 - Region Bern",
)
# for user_data in default_users:
# CourseSessionUser.objects.create(
# course_session=cs,
# user=User.objects.get(username=user_data["email"]),
# )
# csu = CourseSessionUser.objects.create(
# course_session=cs,
# user=User.objects.get(username="trainer-uk1.einstieg@eiger-versicherungen.ch"),
# )
# csu.expert.add(Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-einstieg"))
# csu = CourseSessionUser.objects.create(
# course_session=cs,
# user=User.objects.get(username="trainer-uk1.analyse@eiger-versicherungen.ch"),
# )
# csu.expert.add(Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-analyse"))
# csu = CourseSessionUser.objects.create(
# course_session=cs,
# user=User.objects.get(username="student-uk1-bern@eiger-versicherungen.ch"),
# )
courses = [
{
"course_id": COURSE_UK,
"title": "Überbetriebliche Kurse Lehrjahr 1 - Region Bern",
"basis_slug": "überbetriebliche-kurse-lp-circle-basis",
"kickoff_slug": "überbetriebliche-kurse-lp-circle-kickoff",
"haushalt1_slug": "überbetriebliche-kurse-lp-circle-haushalt-teil-1",
"fahrzeug_slug": "überbetriebliche-kurse-lp-circle-fahrzeug",
"haushalt2_slug": "überbetriebliche-kurse-lp-circle-haushalt-teil-2",
},
{
"course_id": COURSE_UK_FR,
"title": "Cours hors établissement année 1 - Région Fribourg",
"basis_slug": "course-hors-établissement-lp-circle-basis",
"kickoff_slug": "course-hors-établissement-lp-circle-kickoff",
"haushalt1_slug": "course-hors-établissement-lp-circle-haushalt-teil-1",
"fahrzeug_slug": "course-hors-établissement-lp-circle-fahrzeug",
"haushalt2_slug": "course-hors-établissement-lp-circle-haushalt-teil-2",
},
]
for course in courses:
cs = CourseSession.objects.create(
course_id=course["course_id"],
title=course["title"],
)
# for user_data in default_users:
# CourseSessionUser.objects.create(
# course_session=cs,
# user=User.objects.get(username=user_data["email"]),
# )
# csu = CourseSessionUser.objects.create(
# course_session=cs,
# user=User.objects.get(username="trainer-uk1.einstieg@eiger-versicherungen.ch"),
# )
# csu.expert.add(Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-einstieg"))
# csu = CourseSessionUser.objects.create(
# course_session=cs,
# user=User.objects.get(username="trainer-uk1.analyse@eiger-versicherungen.ch"),
# )
# csu.expert.add(Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-analyse"))
# csu = CourseSessionUser.objects.create(
# course_session=cs,
# user=User.objects.get(username="student-uk1-bern@eiger-versicherungen.ch"),
# )
# figma demo users and data
csu = CourseSessionUser.objects.create(
course_session=cs,
user=User.objects.get(username="patrizia.huggel@eiger-versicherungen.ch"),
role=CourseSessionUser.Role.EXPERT,
)
csu.expert.add(Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-kickoff"))
csu.expert.add(
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-haushalt-teil-1")
)
csu.expert.add(Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-fahrzeug"))
csu = CourseSessionUser.objects.create(
course_session=cs,
user=User.objects.get(username="andreas.feuz@eiger-versicherungen.ch"),
role=CourseSessionUser.Role.EXPERT,
)
csu.expert.add(
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-haushalt-teil-2")
)
csu.expert.add(Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-basis"))
_csu = CourseSessionUser.objects.create(
course_session=cs,
user=User.objects.get(username="michael.meier@example.com"),
)
_csu = CourseSessionUser.objects.create(
course_session=cs,
user=User.objects.get(username="lina.egger@example.com"),
)
_csu = CourseSessionUser.objects.create(
course_session=cs,
user=User.objects.get(username="evelyn.schmid@example.com"),
)
# figma demo users and data
csu = CourseSessionUser.objects.create(
course_session=cs,
user=User.objects.get(username="patrizia.huggel@eiger-versicherungen.ch"),
role=CourseSessionUser.Role.EXPERT,
)
csu.expert.add(
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-kickoff")
)
csu.expert.add(
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-haushalt-teil-1")
)
csu.expert.add(
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-fahrzeug")
)
csu = CourseSessionUser.objects.create(
course_session=cs,
user=User.objects.get(username="andreas.feuz@eiger-versicherungen.ch"),
role=CourseSessionUser.Role.EXPERT,
)
csu.expert.add(
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-haushalt-teil-2")
)
csu.expert.add(
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-basis")
)
_csu = CourseSessionUser.objects.create(
course_session=cs,
user=User.objects.get(username="michael.meier@example.com"),
)
_csu = CourseSessionUser.objects.create(
course_session=cs,
user=User.objects.get(username="lina.egger@example.com"),
)
_csu = CourseSessionUser.objects.create(
course_session=cs,
user=User.objects.get(username="evelyn.schmid@example.com"),
)
_csu = CourseSessionUser.objects.create(
course_session=cs,
user=User.objects.get(username="christoph.bosshard@vbv-afa.ch"),
)
_csu = CourseSessionUser.objects.create(
course_session=cs,
user=User.objects.get(username="christoph.bosshard@vbv-afa.ch"),
)
_csu = CourseSessionUser.objects.create(
course_session=cs,
user=User.objects.get(username="axel.manderbach@lernetz.ch"),
)
_csu = CourseSessionUser.objects.create(
course_session=cs,
user=User.objects.get(username="axel.manderbach@lernetz.ch"),
)
create_feedback(
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-kickoff"), cs, 3
)
create_feedback(
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-haushalt-teil-2"),
cs,
14,
)
create_feedback(
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-basis"), cs, 4
)
create_feedback(
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-kickoff"), cs, 3
)
create_feedback(
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-haushalt-teil-2"),
cs,
14,
)
create_feedback(
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-basis"), cs, 4
)
# course session Überbetriebliche Kurse Lehrjahr 1 - Region Zürich
cs = CourseSession.objects.create(

View File

@ -5,7 +5,7 @@ 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
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,
@ -19,9 +19,6 @@ from vbv_lernwelt.learnpath.tests.learning_path_factories import (
TopicFactory,
)
# todo: remove when all Handlungsfelder are ready
READY_HF = ["Fahrzeug", "Reisen"]
def create_uk_learning_path(course_id=COURSE_UK, user=None, skip_locales=True):
if user is None:
@ -80,6 +77,62 @@ def create_uk_learning_path(course_id=COURSE_UK, user=None, skip_locales=True):
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,