Add text for "Vorbereitunsauftrag"

This commit is contained in:
Daniel Egger 2023-05-19 15:46:39 +02:00
parent bd22189f9b
commit 951d9b42e6
4 changed files with 301 additions and 14 deletions

View File

@ -1,6 +1,11 @@
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 (
EvaluationSubTaskBlock,
TaskContentStreamBlock,
AssignmentType,
)
from vbv_lernwelt.assignment.tests.assignment_factories import (
AssignmentFactory,
@ -15,19 +20,11 @@ from vbv_lernwelt.assignment.tests.assignment_factories import (
from vbv_lernwelt.core.utils import replace_whitespace
from vbv_lernwelt.course.consts import COURSE_TEST_ID, 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_assignments(course_id=COURSE_UK):
course_page = CoursePage.objects.get(course_id=course_id)
assignment_page = AssignmentListPageFactory(
parent=course_page,
)
def create_uk_casework(assignment_list_page, course_id=COURSE_UK):
assignment = AssignmentFactory(
parent=assignment_page,
parent=assignment_list_page,
title="Überprüfen einer Motorfahrzeugs-Versicherungspolice",
effort_required="ca. 5 Stunden",
starting_position=replace_whitespace(
@ -896,3 +893,241 @@ def create_test_assignment(course_id=COURSE_TEST_ID):
assignment.save()
return assignment
def create_uk_prep_assignment(assignment_list_page, course_id=COURSE_UK):
assignment = AssignmentFactory(
parent=assignment_list_page,
assignment_type=AssignmentType.PREP_ASSIGNMENT.name,
title="Fahrzeug - Mein erstes Auto",
effort_required="ca. 3 Stunden",
starting_position=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.ük3: Sie erläutern die Leistungen und Produkte im Versicherungsbereich. (K2)</li>
<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/>
<ul>
<li>e4.pv.ük1: Sie erläutern die Dienstleistungen des Betriebs. (K2)</li>
<li>e4.pv.ük2: Sie unterscheiden Mitbewerber in der privaten Versicherungsbranche anhand der relevanten Kriterien.(K2)</li>
<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.
Welches wird dein erstes eigenes Auto sein? Dieses Auto möchtest du natürlich auch schützen und richtig
versichern.
</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=GY2VRYyhwjM" target="_blank">Wie funktioniert eine Autoversicherung? 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: Kapitel «Haftpflichtrecht und Motorfahrzeugversicherung» 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 «Haftpflichtrecht und Motorfahrzeugversicherung» die entsprechenden Kapitel"
)
),
),
(
"user_confirmation",
ExplanationBlockFactory(
text=RichText(
"Ja, ich habe das Kapitel gelesen und verstanden."
)
),
),
],
),
),
)
)
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Teilaufgabe 3: Offerte 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>
Nun geht es los! Erstelle dir für dein erstes eigenes Auto eine entsprechende
Offerte. Überlege dir, welche Deckungen du unbedingt abschliessen musst und
welche Deckungen für dich zusätzlich wünschenswert sind. Nutze dazu das
Offertentool deiner Unternehmung. Alternativ dazu kannst du auch irgendein
Onlinetool nutzen.
</p>
<p>
Möglicherweise musst du mit deinem Geburtsjahrgang etwas schummeln,
damit du alt genug bist, um für dich eine Offerte zu machen.
</p>
"""
)
)
),
),
(
"user_confirmation",
ExplanationBlockFactory(
text=RichText("Ja, ich habe eine Offerte erstellt.")
),
),
],
),
),
)
)
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Teilaufgabe 4: Notizen und Fragestellungen",
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"explanation",
ExplanationBlockFactory(
text=RichText(
"Mache dir im Verlauf des Prozesses Notizen zu den folgenden Fragestellungen:"
)
),
),
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Wie bist du bei der Erstellung deiner Offerte vorgegangen?"
)
),
),
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Welches waren die Schwierigkeiten bei der Erstellung der Offerte? Wie hast du die Schwierigkeiten gelöst?"
)
),
),
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Welche Angaben sind zwingend notwendig, um eine saubere Motorfahrzeugofferte erstellen zu können?"
)
),
),
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Welche zusätzlichen Deckungen hast du gewählt? Was waren die Überlegungen dazu?"
)
),
),
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Welche Faktoren/Elemente bestimmen hauptsächlich die Höhe der Prämie?"
)
),
),
],
),
),
)
)
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Teilaufgabe 5: Präzenz-Training",
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"explanation",
ExplanationBlockFactory(
text=RichText(
"<p>Bringe die Offerte und diese Notizen mit ins Präsenz-Training.</p>"
"<p>Vergiss die dazugehörenden AVB nicht. Es ist auch okay, wenn du die Unterlagen nur elektronisch dabei hast.</p>"
)
),
),
],
),
),
)
)
assignment.save()
return assignment

View File

@ -0,0 +1,18 @@
# Generated by Django 3.2.13 on 2023-05-19 13:43
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('assignment', '0003_initial'),
]
operations = [
migrations.AddField(
model_name='assignment',
name='assignment_type',
field=models.CharField(choices=[('CASEWORK', 'CASEWORK'), ('PREP_ASSIGNMENT', 'PREP_ASSIGNMENT'), ('REFLECTION', 'REFLECTION')], default='CASEWORK', max_length=50),
),
]

View File

@ -8,7 +8,10 @@ from wagtail.admin.panels import FieldPanel
from wagtail.fields import RichTextField, StreamField
from wagtail.models import Page
from vbv_lernwelt.core.constants import DEFAULT_RICH_TEXT_FEATURES
from vbv_lernwelt.core.constants import (
DEFAULT_RICH_TEXT_FEATURES,
DEFAULT_RICH_TEXT_FEATURES_WITH_HEADER,
)
from vbv_lernwelt.core.model_utils import find_available_slug
from vbv_lernwelt.core.models import User
from vbv_lernwelt.course.models import CourseBasePage
@ -104,6 +107,16 @@ class EvaluationTaskBlock(blocks.StructBlock):
label = "Beurteilungskriterium"
AssignmentType = Enum(
"AssignmentType",
[
"CASEWORK", # Geleitete Fallarbeit
"PREP_ASSIGNMENT", # Vorbereitungsauftrag
"REFLECTION", # Reflexion
],
)
class Assignment(CourseBasePage):
serialize_field_names = [
"starting_position",
@ -115,8 +128,15 @@ class Assignment(CourseBasePage):
"evaluation_tasks",
]
assignment_type = models.CharField(
max_length=50,
choices=[(tag.name, tag.name) for tag in AssignmentType],
default=AssignmentType.CASEWORK.name,
)
starting_position = RichTextField(
help_text="Erläuterung der Ausgangslage", features=DEFAULT_RICH_TEXT_FEATURES
help_text="Erläuterung der Ausgangslage",
features=DEFAULT_RICH_TEXT_FEATURES_WITH_HEADER,
)
effort_required = models.CharField(
max_length=100, help_text="Zeitaufwand als Text", blank=True
@ -161,6 +181,7 @@ class Assignment(CourseBasePage):
)
content_panels = Page.content_panels + [
FieldPanel("assignment_type"),
FieldPanel("starting_position"),
FieldPanel("effort_required"),
FieldPanel("performance_objectives"),

View File

@ -2,9 +2,13 @@ import random
import djclick as click
from vbv_lernwelt.assignment.creators.create_assignments import create_uk_assignments
from vbv_lernwelt.assignment.creators.create_assignments import (
create_uk_casework,
create_uk_prep_assignment,
)
from vbv_lernwelt.assignment.models import Assignment
from vbv_lernwelt.assignment.services import update_assignment_completion
from vbv_lernwelt.assignment.tests.assignment_factories import AssignmentListPageFactory
from vbv_lernwelt.competence.create_uk_competence_profile import (
create_uk_competence_profile,
create_uk_fr_competence_profile,
@ -148,7 +152,16 @@ def create_course_uk_de():
create_versicherungsvermittlerin_with_categories(
course_id=COURSE_UK, title="Überbetriebliche Kurse"
)
create_uk_assignments(course_id=COURSE_UK)
# assignments
course_page = CoursePage.objects.get(course_id=COURSE_UK)
assignment_list_page = AssignmentListPageFactory(
parent=course_page,
)
create_uk_casework(assignment_list_page, course_id=COURSE_UK)
create_uk_prep_assignment(assignment_list_page, course_id=COURSE_UK)
# learning path
create_uk_learning_path(course_id=COURSE_UK)
create_uk_competence_profile(course_id=COURSE_UK)
create_default_media_library(course_id=COURSE_UK)