Merged in feature/VBV-445-uk-fr (pull request #139)
Feature/VBV-445 uk fr
This commit is contained in:
commit
895d32935c
File diff suppressed because it is too large
Load Diff
|
|
@ -273,72 +273,13 @@ def create_uk_fr_competence_profile(course_id=COURSE_UK_FR):
|
|||
items=[("item", i) for i in c["items"]],
|
||||
)
|
||||
|
||||
# Circle Fahrzeug
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(
|
||||
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
|
||||
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
|
||||
),
|
||||
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-vorbereitung"
|
||||
),
|
||||
)
|
||||
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-vorbereitung"
|
||||
),
|
||||
)
|
||||
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-vorbereitung"
|
||||
),
|
||||
)
|
||||
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-vorbereitung"
|
||||
),
|
||||
)
|
||||
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-vorbereitung"
|
||||
),
|
||||
)
|
||||
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-vorbereitung"
|
||||
),
|
||||
)
|
||||
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)",
|
||||
competence_id="c3.pv.ci2",
|
||||
title="Je suis capable de d'expliquer les fondements légaux applicables dans le champ d'action des véhicules.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
|
||||
),
|
||||
|
|
@ -347,8 +288,8 @@ def create_uk_fr_competence_profile(course_id=COURSE_UK_FR):
|
|||
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)",
|
||||
competence_id="c3.pv.ci7",
|
||||
title="Je suis capable de d'expliquer les dispositions légales en cas de sinistres et de versement de prestations dans le champ d'action des véhicules.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
|
||||
),
|
||||
|
|
@ -357,8 +298,78 @@ def create_uk_fr_competence_profile(course_id=COURSE_UK_FR):
|
|||
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)",
|
||||
competence_id="c3.pv.ci11",
|
||||
title="Je suis capable de d'évaluer de manière compétente les solutions d’assurance courantes dans le domaine d'action des véhicules.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
|
||||
),
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(
|
||||
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
|
||||
),
|
||||
competence_id="d2.pv.ci1",
|
||||
title="Je suis capable de décrire de manière complète les principales bases légales dans le domaine de l'assurance des véhicules à moteur.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
|
||||
),
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(
|
||||
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
|
||||
),
|
||||
competence_id="d2.pv.ci2",
|
||||
title="Je suis capable de citer les prestations de service et les produits pertinents dans le champ d'action des véhicules.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
|
||||
),
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(
|
||||
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
|
||||
),
|
||||
competence_id="d2.pv.ci3",
|
||||
title="Je suis capable de d'expliquer les services et les produits dans le champ d'action des véhicules.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
|
||||
),
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(
|
||||
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
|
||||
),
|
||||
competence_id="d2.pv.ci4",
|
||||
title="Je suis capable de d'expliquer de manière compréhensible les processus et procédures dans le champ d'action des véhicules.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
|
||||
),
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(
|
||||
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
|
||||
),
|
||||
competence_id="e4.pv.ci1",
|
||||
title="Je suis capable de d'expliquer les services de l'entreprise dans le champ d'action des véhicules.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
|
||||
),
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(
|
||||
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
|
||||
),
|
||||
competence_id="e4.pv.ci2",
|
||||
title="Je suis capable de de distinguer les concurrents dans le secteur des assurances privées dans le champ d'action des véhicules à l'aide des critères pertinents.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
|
||||
),
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(
|
||||
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
|
||||
),
|
||||
competence_id="e4.pv.ci4",
|
||||
title="Je suis capable de d'expliquer les principes sur lesquelles reposent les produits d'assurance automobile.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
|
||||
),
|
||||
|
|
|
|||
|
|
@ -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, COURSE_UK_FR
|
||||
from vbv_lernwelt.course.consts import COURSE_UK
|
||||
from vbv_lernwelt.course.models import CoursePage
|
||||
from vbv_lernwelt.learnpath.models import LearningPath, LearningUnit
|
||||
|
||||
|
|
@ -160,3 +160,156 @@ def create_uk_training_competence_profile(course_id=COURSE_UK):
|
|||
slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
def create_uk_fr_training_competence_profile(course_id=COURSE_UK):
|
||||
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": "c3",
|
||||
"title": "Betriebliche Prozesse dokumentieren, koordinieren und umsetzen",
|
||||
"items": [],
|
||||
},
|
||||
{
|
||||
"competence_id": "e2",
|
||||
"title": "Informationen im wirtschaftlichen und kaufmännischen Bereich recherchieren",
|
||||
"items": [],
|
||||
},
|
||||
{
|
||||
"competence_id": "e4",
|
||||
"title": "Betriebsbezogene Inhalte multimedial aufbereiten",
|
||||
"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:
|
||||
print(c["title"])
|
||||
CompetencePageFactory(
|
||||
parent=competence_profile_page,
|
||||
competence_id=c["competence_id"],
|
||||
title=c["title"],
|
||||
items=[("item", i) for i in c["items"]],
|
||||
)
|
||||
# Circle Fahrzeug
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(
|
||||
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
|
||||
),
|
||||
competence_id="c3.pv.ci2",
|
||||
title="Je suis capable de d'expliquer les fondements légaux applicables dans le champ d'action des véhicules.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
|
||||
),
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(
|
||||
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
|
||||
),
|
||||
competence_id="c3.pv.ci7",
|
||||
title="Je suis capable de d'expliquer les dispositions légales en cas de sinistres et de versement de prestations dans le champ d'action des véhicules.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
|
||||
),
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(
|
||||
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
|
||||
),
|
||||
competence_id="c3.pv.ci11",
|
||||
title="Je suis capable de d'évaluer de manière compétente les solutions d’assurance courantes dans le domaine d'action des véhicules.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
|
||||
),
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(
|
||||
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
|
||||
),
|
||||
competence_id="d2.pv.ci1",
|
||||
title="Je suis capable de décrire de manière complète les principales bases légales dans le domaine de l'assurance des véhicules à moteur.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
|
||||
),
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(
|
||||
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
|
||||
),
|
||||
competence_id="d2.pv.ci2",
|
||||
title="Je suis capable de citer les prestations de service et les produits pertinents dans le champ d'action des véhicules.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
|
||||
),
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(
|
||||
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
|
||||
),
|
||||
competence_id="d2.pv.ci3",
|
||||
title="Je suis capable de d'expliquer les services et les produits dans le champ d'action des véhicules.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
|
||||
),
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(
|
||||
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
|
||||
),
|
||||
competence_id="d2.pv.ci4",
|
||||
title="Je suis capable de d'expliquer de manière compréhensible les processus et procédures dans le champ d'action des véhicules.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
|
||||
),
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(
|
||||
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
|
||||
),
|
||||
competence_id="e4.pv.ci1",
|
||||
title="Je suis capable de d'expliquer les services de l'entreprise dans le champ d'action des véhicules.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
|
||||
),
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(
|
||||
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
|
||||
),
|
||||
competence_id="e4.pv.ci2",
|
||||
title="Je suis capable de de distinguer les concurrents dans le secteur des assurances privées dans le champ d'action des véhicules à l'aide des critères pertinents.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
|
||||
),
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(
|
||||
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
|
||||
),
|
||||
competence_id="e4.pv.ci4",
|
||||
title="Je suis capable de d'expliquer les principes sur lesquelles reposent les produits d'assurance automobile.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -48,6 +48,9 @@ class CourseSessionUserAdmin(admin.ModelAdmin):
|
|||
"course_session",
|
||||
"role",
|
||||
]
|
||||
raw_id_fields = [
|
||||
"user",
|
||||
]
|
||||
|
||||
fieldsets = [
|
||||
(None, {"fields": ("user", "course_session", "role")}),
|
||||
|
|
|
|||
|
|
@ -4,3 +4,4 @@ COURSE_UK = -3
|
|||
COURSE_VERSICHERUNGSVERMITTLERIN_ID = -4
|
||||
COURSE_UK_FR = -5
|
||||
COURSE_UK_TRAINING = -6
|
||||
COURSE_UK_TRAINING_FR = -7
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
UK_FR_CIRCLE_GOALS = {
|
||||
"fahrzeug": """
|
||||
<p class="mt-4">Pour beaucoup, la voiture est la plus grande fierté. Mais elle recèle aussi un grand potentiel de
|
||||
danger. Les prix actuels des véhicules et les frais de réparation peuvent rapidement atteindre des
|
||||
sommes considérables que le propriétaire du véhicule a souvent du mal à assumer lui-même en cas
|
||||
de sinistre important. L'assurance automobile a pour but de te protéger et de protéger financièrement
|
||||
les autres usagers de la route en cas d'accident. Ce Cercle t'aide à y voir plus clair dans la jungle des
|
||||
assurances véhicules à moteur et à prendre la route en toute sécurité!</p>
|
||||
<p class="mt-4">Dans ce cercle, tu développes tes compétences d'action pour ces thèmes:</p>
|
||||
<ul>
|
||||
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>Comment protéger au mieux sa voiture</li>
|
||||
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>Les grandes lignes du droit de la responsabilité civile</li>
|
||||
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>Quels sont les aspects à prendre en compte lors d'une offre</li>
|
||||
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>Comment présenter la solution au client</li>
|
||||
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>Le processus de la proposition à la police</li>
|
||||
</ul>
|
||||
<p class="mt-4">Tu travailles sur les objectifs évaluateurs suivants du profil de qualification:</p>
|
||||
<ul>
|
||||
<li class="flex items-center"><it-icon-check class="hidden h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>c3.pv.ci6 : Ils citent les principes les plus courants en matière de conception des produits et des
|
||||
services dans le domaine de l’assurance. (C1)</li>
|
||||
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>d2.pv.ci1 : Ils décrivent dans le détail les principales bases légales dans le domaine de
|
||||
l’assurance. (C2)</li>
|
||||
</ul>
|
||||
<h3 class="mt-4">Objectifs évaluateurs pour l'auto-évaluation:</h3>
|
||||
<p class="mt-4">Je suis capable de...</p>
|
||||
<ul>
|
||||
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>c3.pv.ci6 : ... de citer les principes les plus courants en matière de conception des produits et des
|
||||
services dans le domaine de l’assurance.</li>
|
||||
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>d2.pv.ci1 : ... de décrire en détail les principales bases légales dans le domaine de l’assurance.</li>
|
||||
</ul>
|
||||
""",
|
||||
}
|
||||
|
|
@ -9,6 +9,7 @@ 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.creators.uk_circle_goals_fr import UK_FR_CIRCLE_GOALS
|
||||
from vbv_lernwelt.course.models import CoursePage
|
||||
from vbv_lernwelt.learnpath.tests.learning_path_factories import (
|
||||
CircleFactory,
|
||||
|
|
@ -106,9 +107,9 @@ def create_uk_fr_learning_path(course_id=COURSE_UK_FR, user=None, skip_locales=T
|
|||
)
|
||||
|
||||
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_fr_circle_kickoff(lp, title="Coup d'envoi")
|
||||
create_uk_fr_circle_basis(lp, title="Base")
|
||||
create_uk_fr_circle_fahrzeug(lp, title="Véhicule")
|
||||
create_uk_circle(lp, title="Budget Partie 1")
|
||||
create_uk_circle(lp, title="Budget Partie 2")
|
||||
|
||||
|
|
@ -304,6 +305,94 @@ In diesem Circle erfährst du wie die überbetrieblichen Kurse aufgebaut sind. Z
|
|||
),
|
||||
|
||||
|
||||
def create_uk_fr_circle_kickoff(lp, title="Coup d'envoi"):
|
||||
circle = CircleFactory(
|
||||
title=title,
|
||||
parent=lp,
|
||||
description="""
|
||||
In diesem Circle erfährst du wie die überbetrieblichen Kurse aufgebaut sind. Zudem lernst du die wichtigsten Grundlagen, damit du erfolgreich mit deinem Lernpfad (durch-)starten kannst.
|
||||
""".strip(),
|
||||
goals=UK_CIRCLE_GOALS["kickoff"],
|
||||
)
|
||||
LearningSequenceFactory(
|
||||
title="Vorbereitung", parent=circle, icon="it-icon-ls-start"
|
||||
)
|
||||
LearningUnitFactory(title="Vorbereitung", title_hidden=True, parent=circle)
|
||||
LearningContentMediaLibraryFactory(
|
||||
title=f"Allgemeines zu Versicherungen",
|
||||
parent=circle,
|
||||
description=RichText(
|
||||
f"<p>In der Mediathek unter «Allgemeines zu Versicherungen» 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",
|
||||
)
|
||||
LearningContentAssignmentFactory(
|
||||
title="Versicherungswirtschaft",
|
||||
assignment_type="PREP_ASSIGNMENT",
|
||||
parent=circle,
|
||||
content_assignment=Assignment.objects.get(
|
||||
slug__startswith=f"überbetriebliche-kurse-assignment-kickoff-versicherungswirtschaft"
|
||||
),
|
||||
),
|
||||
LearningSequenceFactory(title="Training", parent=circle)
|
||||
LearningUnitFactory(title="Präsenzkurs", title_hidden=True, parent=circle)
|
||||
LearningContentAttendanceCourseFactory(
|
||||
title="Präsenzkurs Kickoff",
|
||||
parent=circle,
|
||||
)
|
||||
LearningContentDocumentListFactory(
|
||||
title="Unterlagen für den Unterricht",
|
||||
parent=circle,
|
||||
documents=[
|
||||
(
|
||||
"document",
|
||||
LearnMediaBlockFactory(
|
||||
title="Präsentation 1a",
|
||||
description="",
|
||||
icon_url="/static/icons/demo/icon-hf-book.png",
|
||||
link_display_text="Dokument anzeigen",
|
||||
url="/static/media/uk/de_üK1_KO_03b_A_Einteilungen.pdf",
|
||||
),
|
||||
),
|
||||
(
|
||||
"document",
|
||||
LearnMediaBlockFactory(
|
||||
title="Präsentation 1b",
|
||||
description="",
|
||||
icon_url="/static/icons/demo/icon-hf-book.png",
|
||||
link_display_text="Dokument anzeigen",
|
||||
url="/static/media/uk/de_üK1_KO_03b_A_Einteilungen.pdf",
|
||||
),
|
||||
),
|
||||
(
|
||||
"document",
|
||||
LearnMediaBlockFactory(
|
||||
title="Arbeitsblatt Einteilung der Versicherungen",
|
||||
description="",
|
||||
icon_url="/static/icons/demo/icon-hf-book.png",
|
||||
link_display_text="Dokument anzeigen",
|
||||
url="/static/media/uk/de_üK1_KO_03b_A_Einteilungen.pdf",
|
||||
),
|
||||
),
|
||||
],
|
||||
)
|
||||
LearningUnitFactory(title="Feedback", title_hidden=True, parent=circle)
|
||||
LearningContentFeedbackFactory(
|
||||
parent=circle,
|
||||
)
|
||||
LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
|
||||
LearningUnitFactory(title="Reflexion", title_hidden=True, parent=circle)
|
||||
LearningContentAssignmentFactory(
|
||||
title="Reflexion",
|
||||
assignment_type="REFLECTION",
|
||||
parent=circle,
|
||||
content_assignment=Assignment.objects.get(
|
||||
slug__startswith=f"überbetriebliche-kurse-assignment-reflexion"
|
||||
),
|
||||
),
|
||||
|
||||
|
||||
def create_uk_circle_basis(lp, title="Basis"):
|
||||
circle = CircleFactory(
|
||||
title=title,
|
||||
|
|
@ -412,6 +501,114 @@ In diesem Circle lernst du die wichtigsten Grundlagen bezüglich Versicherungswi
|
|||
),
|
||||
|
||||
|
||||
def create_uk_fr_circle_basis(lp, title="Base"):
|
||||
circle = CircleFactory(
|
||||
title=title,
|
||||
parent=lp,
|
||||
description="""
|
||||
In diesem Circle lernst du die wichtigsten Grundlagen bezüglich Versicherungswirtschaft und Versicherungsrecht.
|
||||
""".strip(),
|
||||
goals=UK_CIRCLE_GOALS["basis"],
|
||||
)
|
||||
LearningSequenceFactory(
|
||||
title="Vorbereitung", parent=circle, icon="it-icon-ls-start"
|
||||
)
|
||||
LearningUnitFactory(title="Vorbereitung", title_hidden=True, parent=circle)
|
||||
LearningContentMediaLibraryFactory(
|
||||
title=f"Allgemeines zu Versicherungen",
|
||||
parent=circle,
|
||||
description=RichText(
|
||||
f"<p>In der Mediathek unter «Allgemeines zu Versicherungen» 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",
|
||||
)
|
||||
LearningContentAssignmentFactory(
|
||||
title="Vorbereitungsauftrag Circle Basis",
|
||||
assignment_type="PREP_ASSIGNMENT",
|
||||
parent=circle,
|
||||
content_assignment=Assignment.objects.get(
|
||||
slug__startswith=f"überbetriebliche-kurse-assignment-circle-basis"
|
||||
),
|
||||
),
|
||||
LearningSequenceFactory(title="Training", parent=circle)
|
||||
LearningUnitFactory(title="Präsenzkurs", title_hidden=True, parent=circle)
|
||||
LearningContentAttendanceCourseFactory(
|
||||
title="Präsenzkurs Basis",
|
||||
parent=circle,
|
||||
)
|
||||
LearningContentDocumentListFactory(
|
||||
title="Unterlagen für den Unterricht",
|
||||
parent=circle,
|
||||
documents=[
|
||||
(
|
||||
"document",
|
||||
LearnMediaBlockFactory(
|
||||
title="Präsentation",
|
||||
description="",
|
||||
icon_url="/static/icons/demo/icon-hf-book.png",
|
||||
link_display_text="Dokument anzeigen",
|
||||
url="/static/media/uk/de_üK1_BA_04_A_Risikomanagement.pdf",
|
||||
),
|
||||
),
|
||||
(
|
||||
"document",
|
||||
LearnMediaBlockFactory(
|
||||
title="Risikomanagement",
|
||||
description="",
|
||||
icon_url="/static/icons/demo/icon-hf-book.png",
|
||||
link_display_text="Dokument anzeigen",
|
||||
url="/static/media/uk/de_üK1_BA_04_A_Risikomanagement.pdf",
|
||||
),
|
||||
),
|
||||
(
|
||||
"document",
|
||||
LearnMediaBlockFactory(
|
||||
title="Quizzes",
|
||||
description="",
|
||||
icon_url="/static/icons/demo/icon-hf-book.png",
|
||||
link_display_text="Dokument anzeigen",
|
||||
url="/static/media/uk/de_üK1_BA_05_QR_Quizzes.pdf",
|
||||
),
|
||||
),
|
||||
(
|
||||
"document",
|
||||
LearnMediaBlockFactory(
|
||||
title="Versicherungsrecht",
|
||||
description="Antragsannahme, Bindefrist und Widerrufsrecht – Kleine Fallstudie",
|
||||
icon_url="/static/icons/demo/icon-hf-book.png",
|
||||
link_display_text="Dokument anzeigen",
|
||||
url="/static/media/uk/de_üK1_BA_06_A_Versicherungsrecht.pdf",
|
||||
),
|
||||
),
|
||||
],
|
||||
)
|
||||
LearningUnitFactory(title="Kompetenznachweis", title_hidden=True, parent=circle)
|
||||
LearningContentTestFactory(
|
||||
title="Wissens- und Verständnisfragen",
|
||||
parent=circle,
|
||||
description=RichText(
|
||||
"<p>Folgender Test mit Wissens- und Verständnisfragen ist Teil des Kompetenznachweises. Der Test kann nur einmal durchgeführt werden und ist notenrelevant.</p>"
|
||||
),
|
||||
checkbox_text="Hiermit bestätige ich, dass ich die Anweisungen verstanden habe und den Test durchführen möchte.",
|
||||
content_url="https://exam.vbv-afa.ch/",
|
||||
)
|
||||
LearningUnitFactory(title="Feedback", title_hidden=True, parent=circle)
|
||||
LearningContentFeedbackFactory(
|
||||
parent=circle,
|
||||
)
|
||||
LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
|
||||
LearningUnitFactory(title="Reflexion", parent=circle)
|
||||
LearningContentAssignmentFactory(
|
||||
title="Reflexion",
|
||||
assignment_type="REFLECTION",
|
||||
parent=circle,
|
||||
content_assignment=Assignment.objects.get(
|
||||
slug__startswith=f"überbetriebliche-kurse-assignment-reflexion"
|
||||
),
|
||||
),
|
||||
|
||||
|
||||
def create_uk_circle_fahrzeug(lp, title="Fahrzeug"):
|
||||
circle = CircleFactory(
|
||||
title=title,
|
||||
|
|
@ -548,6 +745,142 @@ def create_uk_circle_fahrzeug(lp, title="Fahrzeug"):
|
|||
),
|
||||
|
||||
|
||||
def create_uk_fr_circle_fahrzeug(lp, title="Véhicule"):
|
||||
circle = CircleFactory(
|
||||
title=title,
|
||||
parent=lp,
|
||||
description="Dans ce cercle, tu apprends tout ce qui concerne les assurances véhicules à moteur.",
|
||||
goals=UK_FR_CIRCLE_GOALS["fahrzeug"],
|
||||
)
|
||||
course_slug = lp.slug.replace("-lp", "")
|
||||
LearningSequenceFactory(title="Préparation", parent=circle, icon="it-icon-ls-start")
|
||||
LearningUnitFactory(title="Vorbereitung", title_hidden=True, parent=circle)
|
||||
LearningContentMediaLibraryFactory(
|
||||
title=f"Champs d’action «Véhicule à moteur»",
|
||||
parent=circle,
|
||||
description=RichText(
|
||||
f"<p>Trouve toutes les ressources des champs d’action, comme les outils didactiques, les liens et autres informations utiles.</p>"
|
||||
f"<p>Nous te recommandons de te familiariser avec le sujet avant de suivre les autres unités de cours.</p>"
|
||||
),
|
||||
content_url=f"/course/{course_slug}/media/category/{slugify(title)}",
|
||||
)
|
||||
LearningContentAssignmentFactory(
|
||||
title="Véhicule à moteur – Ma première voiture",
|
||||
assignment_type="PREP_ASSIGNMENT",
|
||||
parent=circle,
|
||||
content_assignment=Assignment.objects.get(
|
||||
slug__startswith=f"{course_slug}-assignment-véhicule-à-moteur-ma-première-voiture"
|
||||
),
|
||||
),
|
||||
LearningSequenceFactory(title="Training", parent=circle)
|
||||
LearningUnitFactory(title="Cours de présence", title_hidden=True, parent=circle)
|
||||
LearningContentAttendanceCourseFactory(
|
||||
title="Cours de présence Véhicule à moteur",
|
||||
parent=circle,
|
||||
)
|
||||
LearningContentDocumentListFactory(
|
||||
title="Documentation pour la formation",
|
||||
parent=circle,
|
||||
documents=[
|
||||
(
|
||||
"document",
|
||||
LearnMediaBlockFactory(
|
||||
title="Présentation",
|
||||
description="",
|
||||
icon_url="/static/icons/demo/icon-hf-book.png",
|
||||
link_display_text="Afficher le document",
|
||||
url="/static/media/uk/fr_üK1_FZ_00_Prгentation.pdf",
|
||||
),
|
||||
),
|
||||
(
|
||||
"document",
|
||||
LearnMediaBlockFactory(
|
||||
title="Notions",
|
||||
description="",
|
||||
icon_url="/static/icons/demo/icon-hf-book.png",
|
||||
link_display_text="Afficher le document",
|
||||
url="/static/media/uk/fr_üK1_FZ_02_Begriffe.pdf",
|
||||
),
|
||||
),
|
||||
(
|
||||
"document",
|
||||
LearnMediaBlockFactory(
|
||||
title="Checklist",
|
||||
description="",
|
||||
icon_url="/static/icons/demo/icon-hf-book.png",
|
||||
link_display_text="Afficher le document",
|
||||
url="/static/media/uk/fr_üK1_FZ_04_Checkliste.pdf",
|
||||
),
|
||||
),
|
||||
(
|
||||
"document",
|
||||
LearnMediaBlockFactory(
|
||||
title="Fiche de travail cas de sinistres",
|
||||
description="",
|
||||
icon_url="/static/icons/demo/icon-hf-book.png",
|
||||
link_display_text="Afficher le document",
|
||||
url="/static/media/uk/fr_üK1_FZ_05_A_Schaden.pdf",
|
||||
),
|
||||
),
|
||||
(
|
||||
"document",
|
||||
LearnMediaBlockFactory(
|
||||
title="Aperçu casco",
|
||||
description="",
|
||||
icon_url="/static/icons/demo/icon-hf-book.png",
|
||||
link_display_text="Aperçu casco",
|
||||
url="/static/media/uk/fr_üK1_FZ_07_Kasko.pdf",
|
||||
),
|
||||
),
|
||||
(
|
||||
"document",
|
||||
LearnMediaBlockFactory(
|
||||
title="Offre et entretien de vente",
|
||||
description="",
|
||||
icon_url="/static/icons/demo/icon-hf-book.png",
|
||||
link_display_text="Afficher le document",
|
||||
url="/static/media/uk/fr_üK1_FZ_08_A_Offerte und Verkaufsgespräch.pdf",
|
||||
),
|
||||
),
|
||||
(
|
||||
"document",
|
||||
LearnMediaBlockFactory(
|
||||
title="Fiche de travail cas de sinistres (réserve)",
|
||||
description="",
|
||||
icon_url="/static/icons/demo/icon-hf-book.png",
|
||||
link_display_text="Afficher le document",
|
||||
url="/static/media/uk/fr_üK1_FZ_A_Reserve_Schaden.pdf",
|
||||
),
|
||||
),
|
||||
],
|
||||
)
|
||||
LearningUnitFactory(title="Feedback", title_hidden=True, parent=circle)
|
||||
LearningContentFeedbackFactory(
|
||||
parent=circle,
|
||||
)
|
||||
|
||||
LearningSequenceFactory(title="Transfert", parent=circle, icon="it-icon-ls-end")
|
||||
LearningUnitFactory(
|
||||
title="Contrôle de compétences", title_hidden=True, parent=circle
|
||||
)
|
||||
LearningContentAssignmentFactory(
|
||||
title="Vérification d'une police d’assurance de véhicule à moteur",
|
||||
parent=circle,
|
||||
content_assignment=Assignment.objects.get(
|
||||
slug__startswith=f"{course_slug}-assignment-vérification-d-une-police-d-assurance-de-véhicule-à-moteur"
|
||||
),
|
||||
),
|
||||
LearningUnitFactory(title="Réflexion", title_hidden=True, parent=circle)
|
||||
LearningContentAssignmentFactory(
|
||||
title="Réflexion",
|
||||
assignment_type="REFLECTION",
|
||||
parent=circle,
|
||||
content_assignment=Assignment.objects.get(
|
||||
slug__startswith=f"{course_slug}-assignment-reflexion"
|
||||
),
|
||||
),
|
||||
|
||||
|
||||
UK_CIRCLE_GOALS = {
|
||||
"kickoff": """
|
||||
<p class="mt-4">Hey, willkommen im ersten überbetrieblichen Kurs! Du bist in einer spannenden Branche gelandet. Wir wissen, dass es am Anfang oft eine Herausforderung sein kann, sich in einem neuen Umfeld zurechtzufinden und die vielen neuen Eindrücke zu verarbeiten. Aber keine Sorge, wir sind hier, um dir dabei zu helfen. In deiner Ausbildung wirst du viele neue Fähigkeiten erlernen und dein Wissen vertiefen. In diesem Circle helfen wir dir dabei, den Überblick zu gewinnen und dich mit den neuen Arbeitsabläufen und myVBV vertraut zu machen. Lass uns gemeinsam diese neue Herausforderung meistern und das Beste aus deiner Ausbildung herausholen! </p>
|
||||
|
|
|
|||
|
|
@ -5,8 +5,11 @@ 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.creators.uk_course import create_uk_circle_fahrzeug
|
||||
from vbv_lernwelt.course.consts import COURSE_UK_TRAINING, COURSE_UK_TRAINING_FR
|
||||
from vbv_lernwelt.course.creators.uk_course import (
|
||||
create_uk_circle_fahrzeug,
|
||||
create_uk_fr_circle_fahrzeug,
|
||||
)
|
||||
from vbv_lernwelt.course.models import CoursePage
|
||||
from vbv_lernwelt.learnpath.tests.learning_path_factories import (
|
||||
LearningPathFactory,
|
||||
|
|
@ -14,7 +17,9 @@ from vbv_lernwelt.learnpath.tests.learning_path_factories import (
|
|||
)
|
||||
|
||||
|
||||
def create_uk_training_learning_path(course_id=COURSE_UK, user=None, skip_locales=True):
|
||||
def create_uk_training_learning_path(
|
||||
course_id=COURSE_UK_TRAINING, user=None, skip_locales=True
|
||||
):
|
||||
if user is None:
|
||||
user = User.objects.get(username="info@iterativ.ch")
|
||||
|
||||
|
|
@ -33,8 +38,12 @@ def create_uk_training_learning_path(course_id=COURSE_UK, user=None, skip_locale
|
|||
parent=course_page,
|
||||
)
|
||||
|
||||
TopicFactory(title="Training", is_visible=True, parent=lp)
|
||||
create_uk_circle_fahrzeug(lp)
|
||||
if course_id == COURSE_UK_TRAINING:
|
||||
TopicFactory(title="Training", is_visible=True, parent=lp)
|
||||
create_uk_circle_fahrzeug(lp)
|
||||
elif course_id == COURSE_UK_TRAINING_FR:
|
||||
TopicFactory(title="Training", is_visible=True, parent=lp)
|
||||
create_uk_fr_circle_fahrzeug(lp)
|
||||
|
||||
# locales
|
||||
if not skip_locales:
|
||||
|
|
|
|||
|
|
@ -7,6 +7,9 @@ from vbv_lernwelt.assignment.creators.create_assignments import (
|
|||
create_uk_basis_prep_assignment,
|
||||
create_uk_fahrzeug_casework,
|
||||
create_uk_fahrzeug_prep_assignment,
|
||||
create_uk_fr_fahrzeug_casework,
|
||||
create_uk_fr_fahrzeug_prep_assignment,
|
||||
create_uk_fr_reflection,
|
||||
create_uk_kickoff_prep_assignment,
|
||||
create_uk_reflection,
|
||||
create_vv_einkommenssicherung_casework,
|
||||
|
|
@ -22,6 +25,7 @@ from vbv_lernwelt.competence.create_uk_competence_profile import (
|
|||
create_uk_fr_competence_profile,
|
||||
)
|
||||
from vbv_lernwelt.competence.create_uk_training_competence_profile import (
|
||||
create_uk_fr_training_competence_profile,
|
||||
create_uk_training_competence_profile,
|
||||
)
|
||||
from vbv_lernwelt.competence.create_vv_new_competence_profile import (
|
||||
|
|
@ -35,6 +39,7 @@ from vbv_lernwelt.course.consts import (
|
|||
COURSE_UK,
|
||||
COURSE_UK_FR,
|
||||
COURSE_UK_TRAINING,
|
||||
COURSE_UK_TRAINING_FR,
|
||||
COURSE_VERSICHERUNGSVERMITTLERIN_ID,
|
||||
)
|
||||
from vbv_lernwelt.course.creators.test_course import create_test_course
|
||||
|
|
@ -88,6 +93,7 @@ ADMIN_EMAILS = ["info@iterativ.ch", "admin"]
|
|||
COURSE_VERSICHERUNGSVERMITTLERIN_ID,
|
||||
COURSE_UK_FR,
|
||||
COURSE_UK_TRAINING,
|
||||
COURSE_UK_TRAINING_FR,
|
||||
],
|
||||
)
|
||||
def command(course):
|
||||
|
|
@ -118,6 +124,9 @@ def command(course):
|
|||
if COURSE_UK_TRAINING in course:
|
||||
create_course_training_de()
|
||||
|
||||
if COURSE_UK_TRAINING_FR in course:
|
||||
create_course_training_fr()
|
||||
|
||||
|
||||
def create_versicherungsvermittlerin_course():
|
||||
# Versicherungsvermittler/in mit neuen Circles
|
||||
|
|
@ -339,9 +348,17 @@ def create_course_uk_de():
|
|||
|
||||
def create_course_uk_fr():
|
||||
# Überbetriebliche Kurse FR
|
||||
create_versicherungsvermittlerin_with_categories(
|
||||
course = create_versicherungsvermittlerin_with_categories(
|
||||
course_id=COURSE_UK_FR, title="Course hors établissement"
|
||||
)
|
||||
|
||||
# assignments create assignments parent page
|
||||
_assignment_list_page = AssignmentListPageFactory(
|
||||
parent=course.coursepage,
|
||||
)
|
||||
create_uk_fr_fahrzeug_casework(course_id=COURSE_UK_FR)
|
||||
create_uk_fr_fahrzeug_prep_assignment(course_id=COURSE_UK_FR)
|
||||
create_uk_fr_reflection(course_id=COURSE_UK_FR)
|
||||
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)
|
||||
|
|
@ -478,7 +495,6 @@ def create_course_training_de():
|
|||
f"{current_dir}/../../../importer/tests/Schulungen_Durchfuehrung_Trainer.xlsx",
|
||||
)
|
||||
import_students_from_excel(
|
||||
course,
|
||||
f"{current_dir}/../../../importer/tests/Schulungen_Teilnehmende.xlsx",
|
||||
)
|
||||
|
||||
|
|
@ -529,3 +545,90 @@ def create_course_training_de():
|
|||
)
|
||||
|
||||
csu.save()
|
||||
|
||||
|
||||
def create_course_training_fr():
|
||||
# Test Lehrgang für üK Trainer FR
|
||||
course = create_versicherungsvermittlerin_with_categories(
|
||||
course_id=COURSE_UK_TRAINING_FR, title="myVBV Training (FR)"
|
||||
)
|
||||
|
||||
# assignments create assignments parent page
|
||||
_assignment_list_page = AssignmentListPageFactory(
|
||||
parent=course.coursepage,
|
||||
)
|
||||
create_uk_fr_fahrzeug_casework(course_id=COURSE_UK_TRAINING_FR)
|
||||
create_uk_fr_fahrzeug_prep_assignment(course_id=COURSE_UK_TRAINING_FR)
|
||||
create_uk_fr_reflection(course_id=COURSE_UK_TRAINING_FR)
|
||||
|
||||
create_uk_training_learning_path(course_id=COURSE_UK_TRAINING_FR)
|
||||
create_uk_fr_training_competence_profile(course_id=COURSE_UK_TRAINING_FR)
|
||||
create_default_media_library(course_id=COURSE_UK_TRAINING_FR)
|
||||
|
||||
current_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
print(current_dir)
|
||||
course = Course.objects.get(id=COURSE_UK_TRAINING_FR)
|
||||
import_course_sessions_from_excel(
|
||||
course,
|
||||
f"{current_dir}/../../../importer/tests/Schulungen_Durchfuehrung_Trainer.xlsx",
|
||||
language="fr",
|
||||
)
|
||||
import_trainers_from_excel(
|
||||
course,
|
||||
f"{current_dir}/../../../importer/tests/Schulungen_Durchfuehrung_Trainer.xlsx",
|
||||
language="fr",
|
||||
)
|
||||
import_students_from_excel(
|
||||
f"{current_dir}/../../../importer/tests/Schulungen_Teilnehmende.xlsx",
|
||||
)
|
||||
|
||||
for cs in CourseSession.objects.filter(course_id=COURSE_UK_TRAINING_FR):
|
||||
cs.assignment_details_list = [
|
||||
{
|
||||
"learningContentId": LearningContentAssignment.objects.get(
|
||||
slug=f"{course.slug}-lp-circle-véhicule-lc-vérification-dune-police-dassurance-de-véhicule-à-moteur"
|
||||
).id,
|
||||
"submissionDeadlineDateTimeUtc": "2023-06-13T19:00:00Z",
|
||||
"evaluationDeadlineDateTimeUtc": "2023-06-27T19:00:00Z",
|
||||
},
|
||||
{
|
||||
"learningContentId": LearningContentAssignment.objects.get(
|
||||
slug=f"{course.slug}-lp-circle-véhicule-lc-véhicule-à-moteur-ma-première-voiture"
|
||||
).id,
|
||||
"submissionDeadlineDateTimeUtc": "2023-06-13T19:00:00Z",
|
||||
"evaluationDeadlineDateTimeUtc": "2023-06-27T19:00:00Z",
|
||||
},
|
||||
]
|
||||
cs.save()
|
||||
|
||||
# attach users as trainers to ÜK course
|
||||
course_uk = Course.objects.filter(id=COURSE_UK_FR).first()
|
||||
if course_uk:
|
||||
users = [
|
||||
csu.user
|
||||
for csu in CourseSessionUser.objects.filter(
|
||||
course_session__course_id=COURSE_UK_TRAINING_FR
|
||||
)
|
||||
]
|
||||
|
||||
cs = CourseSession.objects.get(
|
||||
course_id=COURSE_UK_FR,
|
||||
title="Cours hors établissement année 1 - Région Fribourg",
|
||||
)
|
||||
|
||||
for user in users:
|
||||
csu, _created = CourseSessionUser.objects.get_or_create(
|
||||
course_session_id=cs.id, user_id=user.id
|
||||
)
|
||||
csu.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-basis")
|
||||
)
|
||||
csu.expert.add(
|
||||
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-fahrzeug")
|
||||
)
|
||||
|
||||
csu.save()
|
||||
|
|
|
|||
|
|
@ -52,16 +52,20 @@ def create_or_update_user(
|
|||
return user
|
||||
|
||||
|
||||
def import_course_sessions_from_excel(course: Course, filename: str):
|
||||
def import_course_sessions_from_excel(course: Course, filename: str, language="de"):
|
||||
workbook = load_workbook(filename=filename)
|
||||
sheet = workbook["Schulungen Durchführung"]
|
||||
|
||||
tuple_list = calc_header_tuple_list_from_pyxl_sheet(sheet)
|
||||
for row in tuple_list:
|
||||
create_or_update_course_session(course, dict(row), circles=["Fahrzeug"])
|
||||
create_or_update_course_session(
|
||||
course, dict(row), language=language, circles=["Fahrzeug"]
|
||||
)
|
||||
|
||||
|
||||
def create_or_update_course_session(course: Course, data: Dict[str, Any], circles=None):
|
||||
def create_or_update_course_session(
|
||||
course: Course, data: Dict[str, Any], language="de", circles=None
|
||||
):
|
||||
"""
|
||||
:param data: the following keys are required to process the data: Generation, Region, Klasse
|
||||
:return:
|
||||
|
|
@ -86,6 +90,10 @@ def create_or_update_course_session(course: Course, data: Dict[str, Any], circle
|
|||
|
||||
title = f"{region} {generation} {group}"
|
||||
|
||||
if not import_id.lower().startswith(language.lower()):
|
||||
# FIXME: language check depends on import_id format for now...
|
||||
return None
|
||||
|
||||
cs, _created = CourseSession.objects.get_or_create(
|
||||
import_id=import_id, group=group, course=course
|
||||
)
|
||||
|
|
@ -102,56 +110,80 @@ def create_or_update_course_session(course: Course, data: Dict[str, Any], circle
|
|||
cs.save()
|
||||
|
||||
for circle in circles:
|
||||
attendance_course_lp_qs = LearningContentAttendanceCourse.objects.filter(
|
||||
slug=f"{course.slug}-lp-circle-{circle.lower()}-lc-präsenzkurs-{circle.lower()}"
|
||||
)
|
||||
if attendance_course_lp_qs.exists():
|
||||
cs.attendance_courses.append(
|
||||
{
|
||||
"learningContentId": attendance_course_lp_qs.first().id,
|
||||
"start": try_parse_datetime(data[f"{circle} Start"])[1].isoformat(),
|
||||
"end": try_parse_datetime(data[f"{circle} Ende"])[1].isoformat(),
|
||||
"location": data[f"{circle} Raum"],
|
||||
"trainer": "",
|
||||
}
|
||||
if language == "de":
|
||||
attendance_course_lp_qs = LearningContentAttendanceCourse.objects.filter(
|
||||
slug=f"{course.slug}-lp-circle-{circle.lower()}-lc-präsenzkurs-{circle.lower()}"
|
||||
)
|
||||
cs.save()
|
||||
if attendance_course_lp_qs.exists():
|
||||
cs.attendance_courses.append(
|
||||
{
|
||||
"learningContentId": attendance_course_lp_qs.first().id,
|
||||
"start": try_parse_datetime(data[f"{circle} Start"])[
|
||||
1
|
||||
].isoformat(),
|
||||
"end": try_parse_datetime(data[f"{circle} Ende"])[
|
||||
1
|
||||
].isoformat(),
|
||||
"location": data[f"{circle} Raum"],
|
||||
"trainer": "",
|
||||
}
|
||||
)
|
||||
cs.save()
|
||||
elif language == "fr":
|
||||
# todo: this is a hack remove me
|
||||
print(f"{course.slug}-lp-circle-véhicule-lc-cours-de-présence-véhicule")
|
||||
attendance_course_lp_qs = LearningContentAttendanceCourse.objects.filter(
|
||||
slug=f"{course.slug}-lp-circle-véhicule-lc-cours-de-présence-véhicule-à-moteur"
|
||||
)
|
||||
if attendance_course_lp_qs.exists():
|
||||
cs.attendance_courses.append(
|
||||
{
|
||||
"learningContentId": attendance_course_lp_qs.first().id,
|
||||
"start": try_parse_datetime(data[f"{circle} Start"])[
|
||||
1
|
||||
].isoformat(),
|
||||
"end": try_parse_datetime(data[f"{circle} Ende"])[
|
||||
1
|
||||
].isoformat(),
|
||||
"location": data[f"{circle} Raum"],
|
||||
"trainer": "",
|
||||
}
|
||||
)
|
||||
cs.save()
|
||||
|
||||
return cs
|
||||
|
||||
|
||||
def import_trainers_from_excel(course: Course, filename: str):
|
||||
def import_trainers_from_excel(course: Course, filename: str, language="de"):
|
||||
workbook = load_workbook(filename=filename)
|
||||
sheet = workbook["Schulungen Trainer"]
|
||||
|
||||
tuple_list = calc_header_tuple_list_from_pyxl_sheet(sheet)
|
||||
for row in tuple_list:
|
||||
create_or_update_trainer(course, dict(row))
|
||||
create_or_update_trainer(course, dict(row), language=language)
|
||||
|
||||
|
||||
def create_or_update_trainer(course: Course, data: Dict[str, Any]):
|
||||
def create_or_update_trainer(course: Course, data: Dict[str, Any], language="de"):
|
||||
logger.debug(
|
||||
"create_or_update_trainer",
|
||||
course=course.title,
|
||||
data=data,
|
||||
label="import",
|
||||
)
|
||||
|
||||
user = create_or_update_user(
|
||||
email=data["Email"],
|
||||
email=data["Email"].lower(),
|
||||
first_name=data["Vorname"],
|
||||
last_name=data["Name"],
|
||||
)
|
||||
|
||||
# TODO: handle language
|
||||
|
||||
groups = [g.strip() for g in data["Klasse"].strip().split(",")]
|
||||
|
||||
# general expert handling
|
||||
for group in groups:
|
||||
import_id = f"{data['Generation'].strip()} {group}"
|
||||
course_session = CourseSession.objects.filter(
|
||||
import_id=import_id, group=group, course=course
|
||||
import_id=import_id,
|
||||
group=group,
|
||||
).first()
|
||||
if course_session:
|
||||
csu, _created = CourseSessionUser.objects.get_or_create(
|
||||
|
|
@ -159,19 +191,34 @@ def create_or_update_trainer(course: Course, data: Dict[str, Any]):
|
|||
)
|
||||
csu.role = CourseSessionUser.Role.EXPERT
|
||||
csu.save()
|
||||
else:
|
||||
logger.warning(
|
||||
"create_or_update_trainer: course_session not found",
|
||||
import_id=import_id,
|
||||
group=group,
|
||||
label="import",
|
||||
)
|
||||
|
||||
if not course:
|
||||
return
|
||||
|
||||
# circle expert handling
|
||||
circle_data = parse_circle_group_string(data["Circles"])
|
||||
for circle_string in circle_data:
|
||||
parts = circle_string.split("(", 1)
|
||||
circle_name = parts[0].strip()
|
||||
|
||||
groups = [g.strip() for g in parts[1].rstrip(")").strip().split(",")]
|
||||
|
||||
# FIXME: hardcoded translation
|
||||
if language == "fr" and circle_name == "Fahrzeug":
|
||||
circle_name = "Véhicule"
|
||||
|
||||
# print(circle_name, groups)
|
||||
for group in groups:
|
||||
import_id = f"{data['Generation'].strip()} {group}"
|
||||
course_session = CourseSession.objects.filter(
|
||||
import_id=import_id, group=group, course=course
|
||||
import_id=import_id, group=group
|
||||
).first()
|
||||
circle = Circle.objects.filter(
|
||||
slug=f"{course.slug}-lp-circle-{circle_name.lower()}"
|
||||
|
|
@ -186,25 +233,24 @@ def create_or_update_trainer(course: Course, data: Dict[str, Any]):
|
|||
csu.save()
|
||||
|
||||
|
||||
def import_students_from_excel(course: Course, filename: str):
|
||||
def import_students_from_excel(filename: str):
|
||||
workbook = load_workbook(filename=filename)
|
||||
sheet = workbook.active
|
||||
|
||||
tuple_list = calc_header_tuple_list_from_pyxl_sheet(sheet)
|
||||
for row in tuple_list:
|
||||
create_or_update_student(course, dict(row))
|
||||
create_or_update_student(dict(row))
|
||||
|
||||
|
||||
def create_or_update_student(course: Course, data: Dict[str, Any]):
|
||||
def create_or_update_student(data: Dict[str, Any]):
|
||||
logger.debug(
|
||||
"create_or_update_student",
|
||||
course=course.title,
|
||||
data=data,
|
||||
label="import",
|
||||
)
|
||||
|
||||
user = create_or_update_user(
|
||||
email=data["Email"],
|
||||
email=data["Email"].lower(),
|
||||
first_name=data["Vorname"],
|
||||
last_name=data["Name"],
|
||||
)
|
||||
|
|
@ -214,9 +260,7 @@ def create_or_update_student(course: Course, data: Dict[str, Any]):
|
|||
# general expert handling
|
||||
import_ids = [i.strip() for i in data["Durchführungen"].split(",")]
|
||||
for import_id in import_ids:
|
||||
course_session = CourseSession.objects.filter(
|
||||
import_id=import_id, course=course
|
||||
).first()
|
||||
course_session = CourseSession.objects.filter(import_id=import_id).first()
|
||||
if course_session:
|
||||
csu, _created = CourseSessionUser.objects.get_or_create(
|
||||
course_session_id=course_session.id, user_id=user.id
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -25,10 +25,10 @@ class ImportCourseSessionTestCase(TestCase):
|
|||
for row in tuple_list:
|
||||
print(row)
|
||||
create_or_update_course_session(
|
||||
self.course, dict(row), circles=["Fahrzeug"]
|
||||
self.course, dict(row), language="de", circles=["Fahrzeug"]
|
||||
)
|
||||
|
||||
self.assertEqual(CourseSession.objects.count(), 6)
|
||||
self.assertEqual(CourseSession.objects.count(), 3)
|
||||
|
||||
|
||||
class CreateOrUpdateCourseSessionTestCase(TestCase):
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ class ImportStudentsTestCase(TestCase):
|
|||
tuple_list = calc_header_tuple_list_from_pyxl_sheet(sheet)
|
||||
for row in tuple_list:
|
||||
print(row)
|
||||
create_or_update_student(self.course, dict(row))
|
||||
create_or_update_student(dict(row))
|
||||
|
||||
self.assertEqual(CourseSessionUser.objects.count(), 14)
|
||||
|
||||
|
|
@ -59,7 +59,7 @@ class CreateOrUpdateStudentTestCase(TestCase):
|
|||
(None, None),
|
||||
]
|
||||
|
||||
create_or_update_student(self.course, dict(row))
|
||||
create_or_update_student(dict(row))
|
||||
|
||||
self.assertEqual(
|
||||
CourseSessionUser.objects.filter(
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ def authorize(request):
|
|||
|
||||
user_data = _user_data_from_token_data(decoded_token)
|
||||
user = create_or_update_user(
|
||||
email=user_data.get("email"),
|
||||
email=user_data.get("email").lower(),
|
||||
sso_id=user_data.get("sso_id"),
|
||||
first_name=user_data.get("first_name", ""),
|
||||
last_name=user_data.get("last_name", ""),
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue