Merged in feature/VBV-380-test-lehrgang (pull request #95)

Add üK-Training course

Approved-by: Daniel Egger
This commit is contained in:
Christian Cueni 2023-05-26 14:07:09 +00:00 committed by Daniel Egger
commit 6f65f189de
5 changed files with 283 additions and 4 deletions

View File

@ -0,0 +1,162 @@
from vbv_lernwelt.competence.factories import (
CompetencePageFactory,
CompetenceProfilePageFactory,
PerformanceCriteriaFactory,
)
from vbv_lernwelt.competence.models import CompetencePage
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
def create_uk_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.ük2",
title="Ich bin fähig die relevanten rechtlichen Grundlagen im Handlungsfeld Fahrzeug situationsgerecht zu erläutern.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
),
competence_id="c3.pv.ük7",
title="Ich bin fähig die gesetzlichen Bestimmungen bei Schaden- und Leistungsfällen im Handlungsfeld Fahrzeug zu erläutern.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
),
competence_id="c3.pv.ük11",
title="Ich bin fähig die gängigen Versicherungslösungen im Handlungsbereich Fahrzeug fachkundig zu beurteilen.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
),
competence_id="d2.pv.ük1",
title="Ich bin fähig die wichtigsten gesetzlichen Grundlagen im Bereich Motorfahrzeugversicherung umfassend zu beschreiben.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
),
competence_id="d2.pv.ük2",
title="Ich bin fähig die relevanten Dienstleistungen und Produkte im Handlungsfeld Fahrzeug zu nennen.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
),
competence_id="d2.pv.ük3",
title="Ich bin fähig die Leistungen und Produkte im Handlungsfeld Fahrzeug zu erläutern.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
),
competence_id="d2.pv.ük4",
title="Ich bin fähig die Prozesse und Abläufe im Handlungsfeld Fahrzeug zu erläutern.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
),
competence_id="e4.pv.ük1",
title="Ich bin fähig die Dienstleistungen des eigenen Betriebs im Handlungsfeld Fahrzeug zu erläutern.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
),
competence_id="e4.pv.ük2",
title="Ich bin fähig Mitbewerber in der privaten Versicherungsbranche im Handlungsfeld Fahrzeug anhand der relevanten Kriterien zu unterscheiden.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
),
competence_id="e4.pv.ük4",
title="Ich bin fähig die Grundlagen der Produkte von Motorfahrzeugversicherungen zu erläutern.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
),
)

View File

@ -3,3 +3,4 @@ COURSE_VERSICHERUNGSVERMITTLERIN_OLD_ID = -2
COURSE_UK = -3 COURSE_UK = -3
COURSE_VERSICHERUNGSVERMITTLERIN_ID = -4 COURSE_VERSICHERUNGSVERMITTLERIN_ID = -4
COURSE_UK_FR = -5 COURSE_UK_FR = -5
COURSE_UK_TRAINING = -6

View File

@ -319,6 +319,7 @@ def create_uk_circle_fahrzeug(lp, title="Fahrzeug"):
description="In diesem Circle lernst du alles rund um Motorfahrzeugversicherungen.", description="In diesem Circle lernst du alles rund um Motorfahrzeugversicherungen.",
goals=UK_CIRCLE_GOALS["fahrzeug"], goals=UK_CIRCLE_GOALS["fahrzeug"],
) )
course_slug = lp.slug.replace("-lp", "")
LearningSequenceFactory( LearningSequenceFactory(
title="Vorbereitung", parent=circle, icon="it-icon-ls-start" title="Vorbereitung", parent=circle, icon="it-icon-ls-start"
) )
@ -330,14 +331,14 @@ def create_uk_circle_fahrzeug(lp, title="Fahrzeug"):
f"<p>In der Mediathek unter dem Handlungsfeld «{title}» findest du alle relevanten Ressourcen für deine Fachkompetenzen.</p>" 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>" 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)}", content_url=f"/course/{course_slug}/media/category/{slugify(title)}",
) )
LearningContentAssignmentFactory( LearningContentAssignmentFactory(
title="Fahrzeug - Mein erstes Auto", title="Fahrzeug - Mein erstes Auto",
assignment_type="PREP_ASSIGNMENT", assignment_type="PREP_ASSIGNMENT",
parent=circle, parent=circle,
content_assignment=Assignment.objects.get( content_assignment=Assignment.objects.get(
slug__startswith="überbetriebliche-kurse-assignment-fahrzeug-mein-erstes-auto" slug__startswith=f"{course_slug}-assignment-fahrzeug-mein-erstes-auto"
), ),
), ),
LearningSequenceFactory(title="Training", parent=circle) LearningSequenceFactory(title="Training", parent=circle)
@ -360,7 +361,7 @@ def create_uk_circle_fahrzeug(lp, title="Fahrzeug"):
title="Überprüfen einer Motorfahrzeug-Versicherungspolice", title="Überprüfen einer Motorfahrzeug-Versicherungspolice",
parent=circle, parent=circle,
content_assignment=Assignment.objects.get( content_assignment=Assignment.objects.get(
slug__startswith="überbetriebliche-kurse-assignment-überprüfen-einer-motorfahrzeugs" slug__startswith=f"{course_slug}-assignment-überprüfen-einer-motorfahrzeugs"
), ),
), ),
LearningContentAssignmentFactory( LearningContentAssignmentFactory(
@ -368,7 +369,7 @@ def create_uk_circle_fahrzeug(lp, title="Fahrzeug"):
assignment_type="REFLECTION", assignment_type="REFLECTION",
parent=circle, parent=circle,
content_assignment=Assignment.objects.get( content_assignment=Assignment.objects.get(
slug__startswith="überbetriebliche-kurse-assignment-fahrzeug-reflexionsfragen" slug__startswith=f"{course_slug}-assignment-fahrzeug-reflexionsfragen"
), ),
), ),

View File

@ -0,0 +1,53 @@
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
from vbv_lernwelt.course.creators.uk_course import create_uk_circle_fahrzeug
from vbv_lernwelt.course.models import CoursePage
from vbv_lernwelt.learnpath.tests.learning_path_factories import (
LearningPathFactory,
TopicFactory,
)
def create_uk_training_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="Training", is_visible=True, parent=lp)
create_uk_circle_fahrzeug(lp)
# 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)

View File

@ -14,6 +14,9 @@ from vbv_lernwelt.competence.create_uk_competence_profile import (
create_uk_competence_profile, create_uk_competence_profile,
create_uk_fr_competence_profile, create_uk_fr_competence_profile,
) )
from vbv_lernwelt.competence.create_uk_training_competence_profile import (
create_uk_training_competence_profile,
)
from vbv_lernwelt.competence.create_vv_new_competence_profile import ( from vbv_lernwelt.competence.create_vv_new_competence_profile import (
create_vv_new_competence_profile, create_vv_new_competence_profile,
) )
@ -24,6 +27,7 @@ from vbv_lernwelt.course.consts import (
COURSE_TEST_ID, COURSE_TEST_ID,
COURSE_UK, COURSE_UK,
COURSE_UK_FR, COURSE_UK_FR,
COURSE_UK_TRAINING,
COURSE_VERSICHERUNGSVERMITTLERIN_ID, COURSE_VERSICHERUNGSVERMITTLERIN_ID,
) )
from vbv_lernwelt.course.creators.test_course import create_test_course from vbv_lernwelt.course.creators.test_course import create_test_course
@ -31,6 +35,9 @@ from vbv_lernwelt.course.creators.uk_course import (
create_uk_fr_learning_path, create_uk_fr_learning_path,
create_uk_learning_path, create_uk_learning_path,
) )
from vbv_lernwelt.course.creators.uk_training_course import (
create_uk_training_learning_path,
)
from vbv_lernwelt.course.creators.versicherungsvermittlerin import ( from vbv_lernwelt.course.creators.versicherungsvermittlerin import (
create_versicherungsvermittlerin_with_categories, create_versicherungsvermittlerin_with_categories,
) )
@ -63,6 +70,7 @@ ADMIN_EMAILS = ["info@iterativ.ch", "admin"]
COURSE_UK, COURSE_UK,
COURSE_VERSICHERUNGSVERMITTLERIN_ID, COURSE_VERSICHERUNGSVERMITTLERIN_ID,
COURSE_UK_FR, COURSE_UK_FR,
COURSE_UK_TRAINING,
], ],
) )
def command(course): def command(course):
@ -90,6 +98,9 @@ def command(course):
if COURSE_TEST_ID in course: if COURSE_TEST_ID in course:
create_test_course(with_sessions=True) create_test_course(with_sessions=True)
if COURSE_UK_TRAINING in course:
create_course_training_de()
def create_versicherungsvermittlerin_course(): def create_versicherungsvermittlerin_course():
# Versicherungsvermittler/in mit neuen Circles # Versicherungsvermittler/in mit neuen Circles
@ -404,3 +415,54 @@ def create_course_uk_de_completion_data(course_session):
course_session=course_session, course_session=course_session,
completion_status="fail", completion_status="fail",
) )
def create_course_training_de():
# Test Lehrgang für üK Trainer
course = create_versicherungsvermittlerin_with_categories(
course_id=COURSE_UK_TRAINING, title="myVBV Training"
)
# assignments create assignments parent page
_assignment_list_page = AssignmentListPageFactory(
parent=course.coursepage,
)
create_uk_casework(course_id=COURSE_UK_TRAINING)
create_uk_prep_assignment(course_id=COURSE_UK_TRAINING)
create_uk_reflection(course_id=COURSE_UK_TRAINING)
create_uk_training_learning_path(course_id=COURSE_UK_TRAINING)
create_uk_training_competence_profile(course_id=COURSE_UK_TRAINING)
create_default_media_library(course_id=COURSE_UK_TRAINING)
cs = CourseSession.objects.create(
course_id=COURSE_UK_TRAINING,
title="Demo-Tag",
attendance_courses=[
{
"learningContentId": LearningContentAttendanceCourse.objects.get(
slug=f"{course.slug}-lp-circle-fahrzeug-lc-präsenzkurs-fahrzeug"
).id,
"start": "2023-05-23T08:30:00+0200",
"end": "2023-05-23T17:00:00+0200",
"location": "Handelsschule KV Bern, Zimmer 123, Eigerstrasse 16, 3012 Bern",
"trainer": "Roland Grossenbacher, roland.grossenbacher@helvetia.ch",
}
],
assignment_details_list=[
{
"learningContentId": LearningContentAssignment.objects.get(
slug=f"{course.slug}-lp-circle-fahrzeug-lc-überprüfen-einer-motorfahrzeug-versicherungspolice"
).id,
"submissionDeadlineDateTimeUtc": "2023-06-13T19:00:00Z",
"evaluationDeadlineDateTimeUtc": "2023-06-27T19:00:00Z",
},
{
"learningContentId": LearningContentAssignment.objects.get(
slug=f"{course.slug}-lp-circle-fahrzeug-lc-fahrzeug-mein-erstes-auto"
).id,
"submissionDeadlineDateTimeUtc": "2023-06-13T19:00:00Z",
"evaluationDeadlineDateTimeUtc": "2023-06-27T19:00:00Z",
},
],
)