Create Vorbereitungsauftrag Kickoff

This commit is contained in:
Daniel Egger 2023-05-26 17:06:24 +02:00
parent 1fa420a11b
commit 45161788cc
6 changed files with 228 additions and 30 deletions

View File

@ -1,3 +1,7 @@
from wagtail.blocks import StreamValue
from wagtail.blocks.list_block import ListBlock, ListValue
from wagtail.rich_text import RichText
from vbv_lernwelt.assignment.models import (
AssignmentListPage,
AssignmentType,
@ -16,12 +20,9 @@ from vbv_lernwelt.assignment.tests.assignment_factories import (
from vbv_lernwelt.core.utils import replace_whitespace
from vbv_lernwelt.course.consts import COURSE_UK
from vbv_lernwelt.course.models import CoursePage
from wagtail.blocks import StreamValue
from wagtail.blocks.list_block import ListBlock, ListValue
from wagtail.rich_text import RichText
def create_uk_casework(course_id=COURSE_UK):
def create_uk_fahrzeug_casework(course_id=COURSE_UK):
assignment_list_page = (
CoursePage.objects.get(course_id=course_id)
.get_children()
@ -465,7 +466,7 @@ def create_uk_casework(course_id=COURSE_UK):
return assignment
def create_uk_prep_assignment(course_id=COURSE_UK):
def create_uk_fahrzeug_prep_assignment(course_id=COURSE_UK):
assignment_list_page = (
CoursePage.objects.get(course_id=course_id)
.get_children()
@ -489,7 +490,7 @@ def create_uk_prep_assignment(course_id=COURSE_UK):
<li>d2pv.ük4: Sie erläutern die Prozesse und Abläufe im privaten Versicherungsbereich. (K2)</li>
</ul>
</p>
<p>
Handlungskompetenz e4: Betriebsbezogene Inhalte multimedial aufbereiten<br/>
Arbeitssituation 1: Charakteristiken der Branche und Stärken des Betriebs einbringen<br/>
@ -499,10 +500,10 @@ def create_uk_prep_assignment(course_id=COURSE_UK):
<li>e4.pv.ük4: Sie erläutern die Grundlagen der Produkte von Privatversicherungen. (K2)</li>
</ul>
</p>
<h3>Ausgangslage</h3>
<p>
Stell dir vor, du hast die Autoprüfung abgeschlossen und nun kann es endlich losgehen mit deiner Mobilität.
Stell dir vor, du hast die Autoprüfung abgeschlossen und nun kann es endlich losgehen mit deiner Mobilität.
Welches wird dein erstes eigenes Auto sein? Dieses Auto möchtest du natürlich auch schützen und richtig
versichern.
</p>
@ -780,6 +781,160 @@ def create_uk_prep_assignment(course_id=COURSE_UK):
return assignment
def create_uk_kickoff_prep_assignment(course_id=COURSE_UK):
assignment_list_page = (
CoursePage.objects.get(course_id=course_id)
.get_children()
.exact_type(AssignmentListPage)
.first()
)
assignment = AssignmentFactory(
parent=assignment_list_page,
assignment_type=AssignmentType.PREP_ASSIGNMENT.name,
title="Kickoff - Versicherungswirtschaft",
effort_required="ca. 2 Stunden",
intro_text=replace_whitespace(
"""
<h3>Handlungskompetenzen, Arbeitssituationen & Leistungsziele</h3>
<p>
Handlungskompetenz d2: Informations- und Beratungsgespräch mit Kunden oder Lieferanten führen<br/>
Arbeitssituation 4: Kunden beraten und dazugehörige Prozesse abwickeln<br/>
<ul>
<li>d2.pv.ük1: Sie beschreiben die wichtigsten gesetzlichen Grundlagen im Versicherungsbereich umfassend</li>
</ul>
</p>
<p>
Handlungskompetenz c3: Betriebliche Prozesse dokumentieren, koordinieren und umsetzen<br/>
Arbeitssituation 5: Anträge verarbeiten, Verträge gestalten, Produkte entwickeln und pflegen<br/>
<ul>
<li>c3.pv.ük6: Sie nennen die gängigen Grundsätze bei der Gestaltung von Produkten und Dienstleistungen im Versicherungsbereich (K1)</li>
</ul>
</p>
<h3>Ausgangslage</h3>
<p>
Das Leben hat nicht nur Sonnenseiten, es birgt auch Risiken in sich. So können wir schon morgen einen
Unfall haben oder schwer erkranken. Oder ein Haus wird durch ein Hagelzug ziemlich beschädigt. Vor
solchen Risiken kann sich niemand vollständig schützen. Jedoch können wir uns gegen den finanziellen
Schaden absichern. Diese Art von Schutz bieten Versicherungen.<br/>
In dieser Sequenz beschäftigen wir uns damit, das eigentlich eine Versicherung ausmacht.
</p>
"""
),
performance_objectives=[],
)
assignment.tasks = []
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Teilaufgabe 1: Verschaffe dir einen ersten Überblick zum Thema.",
# it is hard to create a StreamValue programmatically, we have to
# create a `StreamValue` manually. Ask Daniel and/or Ramon
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"explanation",
ExplanationBlockFactory(
text=RichText(
'Schaue dazu das folgende Video: <a href="https://www.youtube.com/watch?v=NgttivRt6Fo&list=PL1caXvEGRT26oPfYc2C7CbYrldQQglzFI&index=2" target="_blank"> Wie funktioniert eine Versicherung? Einfach erklärt </a>'
)
),
),
(
"user_confirmation",
ExplanationBlockFactory(
text=RichText(
"Ja, ich habe das Video angeschaut und verstanden."
)
),
),
],
),
),
)
)
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Teilaufgabe 2: «Idee Versicherung» lesen",
# it is hard to create a StreamValue programmatically, we have to
# create a `StreamValue` manually. Ask Daniel and/or Ramon
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"explanation",
ExplanationBlockFactory(
text=RichText(
"Lese und bearbeite im Buch «Idee Versicherung» die Seiten 12 bis 30."
)
),
),
(
"user_confirmation",
ExplanationBlockFactory(
text=RichText(
"Ja, ich habe die Seiten gelesen und verstanden."
)
),
),
],
),
),
)
)
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Teilaufgabe 3: Skizze erstellen",
# it is hard to create a StreamValue programmatically, we have to
# create a `StreamValue` manually. Ask Daniel and/or Ramon
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"explanation",
ExplanationBlockFactory(
text=RichText(
replace_whitespace(
"""
<p>
Erstelle aufgrund des Gelesenen eine Skizze, welche für dich das Grundprinzip einer Versicherung darstellt.
</p>
<p>
Nimm diese Skizze mit in den Unterricht.
</p>
"""
)
)
),
),
(
"user_confirmation",
ExplanationBlockFactory(
text=RichText("Ja, ich habe die Skizze erstellt.")
),
),
],
),
),
)
)
assignment.save()
return assignment
def create_uk_reflection(course_id=COURSE_UK, circle_title="Fahrzeug"):
assignment_list_page = (
CoursePage.objects.get(course_id=course_id)
@ -796,10 +951,10 @@ def create_uk_reflection(course_id=COURSE_UK, circle_title="Fahrzeug"):
intro_text=replace_whitespace(
"""
<p>
Du hast in diesem Circle viele neue Inhalte und Inputs erhalten.
Nun ist es Zeit, nochmals auf dein Kompetenzprofil zu schauen.
Das Beantworten von Reflexionsfragen hilft dir den eigenen Lern- und Denkprozess sichtbar und begreifbar zu machen.
Es deckt deine persönlichen Stärken und Schwächen während der Erarbeitung auf und hilft dir, dich laufend zu verbessern.
Du hast in diesem Circle viele neue Inhalte und Inputs erhalten.
Nun ist es Zeit, nochmals auf dein Kompetenzprofil zu schauen.
Das Beantworten von Reflexionsfragen hilft dir den eigenen Lern- und Denkprozess sichtbar und begreifbar zu machen.
Es deckt deine persönlichen Stärken und Schwächen während der Erarbeitung auf und hilft dir, dich laufend zu verbessern.
</p>
"""
),

View File

@ -3,7 +3,9 @@ import json
from django.utils import timezone
from rest_framework.test import APITestCase
from vbv_lernwelt.assignment.creators.create_assignments import create_uk_casework
from vbv_lernwelt.assignment.creators.create_assignments import (
create_uk_fahrzeug_casework,
)
from vbv_lernwelt.assignment.models import (
AssignmentCompletion,
AssignmentCompletionAuditLog,
@ -20,7 +22,7 @@ class AssignmentApiTestCase(APITestCase):
def setUp(self) -> None:
create_default_users()
create_test_course(include_vv=False)
self.assignment = create_uk_casework(course_id=COURSE_TEST_ID)
self.assignment = create_uk_fahrzeug_casework(course_id=COURSE_TEST_ID)
self.assignment_subtasks = self.assignment.filter_user_subtasks()
self.cs = CourseSession.objects.create(

View File

@ -7,8 +7,8 @@ from wagtail.models import Site
from wagtail.rich_text import RichText
from vbv_lernwelt.assignment.creators.create_assignments import (
create_uk_casework,
create_uk_prep_assignment,
create_uk_fahrzeug_casework,
create_uk_fahrzeug_prep_assignment,
)
from vbv_lernwelt.assignment.models import Assignment
from vbv_lernwelt.assignment.services import update_assignment_completion
@ -72,8 +72,8 @@ def create_test_course(include_uk=True, include_vv=True, with_sessions=False):
_assignment_list_page = AssignmentListPageFactory(
parent=course_page,
)
create_uk_casework(course_id=COURSE_TEST_ID)
create_uk_prep_assignment(course_id=COURSE_TEST_ID)
create_uk_fahrzeug_casework(course_id=COURSE_TEST_ID)
create_uk_fahrzeug_prep_assignment(course_id=COURSE_TEST_ID)
create_test_learning_path(include_uk=include_uk, include_vv=include_vv)
create_test_media_library()

View File

@ -24,6 +24,9 @@ from vbv_lernwelt.learnpath.tests.learning_path_factories import (
LearningUnitFactory,
TopicFactory,
)
from vbv_lernwelt.media_library.tests.media_library_factories import (
LearnMediaBlockFactory,
)
def create_uk_learning_path(course_id=COURSE_UK, user=None, skip_locales=True):
@ -230,20 +233,56 @@ In diesem Circle erfährst du wie die überbetrieblichen Kurse aufgebaut sind. Z
title=f"Allgemeines zu Versicherungen",
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>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/category/{slugify(title)}",
content_url=f"/course/überbetriebliche-kurse/media",
)
LearningContentPlaceholderFactory(
title="Vorbereitungsauftrag",
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="Unterlagen", parent=circle)
LearningContentPlaceholderFactory(
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="Präsenzkurs", parent=circle)
LearningContentAttendanceCourseFactory(

View File

@ -3,9 +3,10 @@ import random
import djclick as click
from vbv_lernwelt.assignment.creators.create_assignments import (
create_uk_casework,
create_uk_prep_assignment,
create_uk_fahrzeug_casework,
create_uk_fahrzeug_prep_assignment,
create_uk_reflection,
create_uk_kickoff_prep_assignment,
)
from vbv_lernwelt.assignment.models import Assignment
from vbv_lernwelt.assignment.services import update_assignment_completion
@ -169,8 +170,9 @@ def create_course_uk_de():
_assignment_list_page = AssignmentListPageFactory(
parent=course.coursepage,
)
create_uk_casework(course_id=COURSE_UK)
create_uk_prep_assignment(course_id=COURSE_UK)
create_uk_kickoff_prep_assignment(course_id=COURSE_UK)
create_uk_fahrzeug_casework(course_id=COURSE_UK)
create_uk_fahrzeug_prep_assignment(course_id=COURSE_UK)
create_uk_reflection(course_id=COURSE_UK)
# learning path
@ -427,8 +429,8 @@ def create_course_training_de():
_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_fahrzeug_casework(course_id=COURSE_UK_TRAINING)
create_uk_fahrzeug_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)