diff --git a/server/vbv_lernwelt/assignment/creators/create_assignments.py b/server/vbv_lernwelt/assignment/creators/create_assignments.py
index 855c1b3c..bc2eb4de 100644
--- a/server/vbv_lernwelt/assignment/creators/create_assignments.py
+++ b/server/vbv_lernwelt/assignment/creators/create_assignments.py
@@ -5,7 +5,6 @@ from vbv_lernwelt.assignment.models import (
)
from vbv_lernwelt.assignment.tests.assignment_factories import (
AssignmentFactory,
- AssignmentListPageFactory,
EvaluationSubTaskBlockFactory,
EvaluationTaskBlockFactory,
ExplanationBlockFactory,
@@ -14,8 +13,7 @@ from vbv_lernwelt.assignment.tests.assignment_factories import (
UserTextInputBlockFactory,
)
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 vbv_lernwelt.course.consts import COURSE_UK
from wagtail.blocks import StreamValue
from wagtail.blocks.list_block import ListBlock, ListValue
from wagtail.rich_text import RichText
@@ -458,445 +456,6 @@ def create_uk_casework(assignment_list_page, course_id=COURSE_UK):
return assignment
-def create_test_assignment(course_id=COURSE_TEST_ID):
- course_page = CoursePage.objects.get(course_id=course_id)
- assignment_page = AssignmentListPageFactory(
- parent=course_page,
- )
-
- assignment = AssignmentFactory(
- parent=assignment_page,
- title="Überprüfen einer Motorfahrzeugs-Versicherungspolice",
- effort_required="ca. 5 Stunden",
- intro_text=replace_whitespace(
- """
- Jemand aus deiner Familie oder aus deinem Freundeskreis möchte sein
- Versicherungspolice überprüfen lassen. Diese Person kommt nun mit ihrer Police auf dich zu
- und bittet dich als Versicherungsprofi, diese kritisch zu überprüfen und ihr ggf. Anpassungsvorschläge
- zu unterbreiten. In diesem Kompetenznachweis kannst du nun dein Wissen und Können im Bereich
- der Motorfahrzeugversicherung unter Beweis stellen.
- """
- ),
- performance_objectives=[
- (
- "performance_objective",
- PerformanceObjectiveBlockFactory(
- text="Sie erläutern die Leistungen und Produkte im Versicherungsbereich."
- ),
- ),
- (
- "performance_objective",
- PerformanceObjectiveBlockFactory(
- text="Sie beurteilen gängige Versicherungslösungen fachkundig."
- ),
- ),
- ],
- evaluation_document_url="/static/media/assignments/UK_03_09_NACH_KN_Beurteilungsraster.pdf",
- evaluation_description="Diese geleitete Fallarbeit wird auf Grund des folgenden Beurteilungsintrument bewertet.",
- )
-
- assignment.evaluation_tasks = []
- assignment.evaluation_tasks.append(
- (
- "task",
- EvaluationTaskBlockFactory(
- title="Ausgangslage des Auftrags",
- description=RichText(
- "Beschreibt der/die Lernende die Ausgangslage des Auftrags vollständig?"
- ),
- max_points=6,
- sub_tasks=ListValue(
- ListBlock(EvaluationSubTaskBlock()),
- values=[
- EvaluationSubTaskBlockFactory(
- title="Die Ausgangslage des Auftrag ist vollständig beschrieben.",
- description=RichText(
- replace_whitespace(
- """
-
- - Worum geht es? Was ist die Aufgabe?
- - Sind das Kundenprofil und die Kundenbeziehung vollständig und nachvollziehbar dargestellt?
- - Ist das Alter des Fahrzeugs dokumentiert?
- - Welche Ressourcen stehen zur Verfügung?
-
- """
- )
- ),
- points=6,
- ),
- EvaluationSubTaskBlockFactory(
- title="Die Ausgangslage ist grösstenteils vollständig beschrieben.",
- points=4,
- ),
- EvaluationSubTaskBlockFactory(
- title="Die Ausgangslage ist unvollständig - nur 2 Punkte wurden beschrieben.",
- points=2,
- ),
- EvaluationSubTaskBlockFactory(
- title="Die Ausgangslage des Auftrag ist unvollständig - es fehlen mehr als 2 Punkte in der Beschreibung.",
- points=0,
- ),
- ],
- ),
- ),
- ),
- )
- assignment.evaluation_tasks.append(
- (
- "task",
- EvaluationTaskBlockFactory(
- title="Inhaltsanalyse und Struktur",
- max_points=6,
- description=RichText(
- "Sind die Deckungen der Police vollständig und nachvollziehbar dokumentiert?"
- ),
- sub_tasks=ListValue(
- ListBlock(EvaluationSubTaskBlock()),
- values=[
- EvaluationSubTaskBlockFactory(
- title="Die Analyse beinhaltet alle in der Police vorhandenen Deckungen und ist logisch aufgebaut.",
- points=6,
- ),
- EvaluationSubTaskBlockFactory(
- title="Die Analyse beinhaltet die meisten vorhandenen Deckungen in der Police und ist grösstenteils logisch aufgebaut.",
- points=4,
- ),
- EvaluationSubTaskBlockFactory(
- title="Die Analyse ist unvollständig (es fehlen mehr als 3 Deckungen) und der rote Faden ist nicht erkennbar.",
- points=2,
- ),
- EvaluationSubTaskBlockFactory(
- title="Die Analyse ist insgesamt nicht nachvollziehbar und es fehlen einige Deckungen.",
- points=0,
- ),
- ],
- ),
- ),
- ),
- )
- assignment.evaluation_tasks.append(
- (
- "task",
- EvaluationTaskBlockFactory(
- title="Sinnvolle Empfehlungen",
- max_points=6,
- description=RichText(
- "Leitet die lernende Person sinnvolle und geeignete Empfehlungen ab?"
- ),
- sub_tasks=ListValue(
- ListBlock(EvaluationSubTaskBlock()),
- values=[
- EvaluationSubTaskBlockFactory(
- title="Die Empfehlungen sind durchgängig sinnvoll und nachvollziehbar begründet.",
- points=6,
- ),
- EvaluationSubTaskBlockFactory(
- title="Die Empfehlungen sind grösstenteils sinnvoll und nachvollziehbar begründet.",
- points=4,
- ),
- EvaluationSubTaskBlockFactory(
- title="Die Empfehlungen sind wenig sinnvoll und unvollständig begründet.",
- points=2,
- ),
- EvaluationSubTaskBlockFactory(
- title="Die Empfehlungen sind weder sinnvoll nch nachvollziehbar begründet.",
- points=0,
- ),
- ],
- ),
- ),
- ),
- )
- assignment.evaluation_tasks.append(
- (
- "task",
- EvaluationTaskBlockFactory(
- title="Qualität der Reflexion",
- max_points=3,
- description=RichText(
- "Reflektiert die lernende Person die Durchführung der geleiteten Fallarbeit?"
- ),
- sub_tasks=ListValue(
- ListBlock(EvaluationSubTaskBlock()),
- values=[
- EvaluationSubTaskBlockFactory(
- title="Die Reflexion bezieht sich auf die geleitete Fallarbeit und umfasst nachvollziehbare positive wie negative Aspekte.",
- points=3,
- ),
- EvaluationSubTaskBlockFactory(
- title="Die Reflexion bezieht sich auf die geleitete Fallarbeit und umfasst grösstenteils nachvollziehbare positive wie negative Aspekte.",
- points=2,
- ),
- EvaluationSubTaskBlockFactory(
- title="Die Reflexion ist unvollständig.",
- points=1,
- ),
- EvaluationSubTaskBlockFactory(
- title="Die Reflexion bezieht sich nicht auf die geleitete Fallarbeit.",
- points=0,
- ),
- ],
- ),
- ),
- ),
- )
- assignment.evaluation_tasks.append(
- (
- "task",
- EvaluationTaskBlockFactory(
- title="Eignung der Learnings",
- max_points=3,
- description=RichText(
- "Leitet die lernende Person geeignete Learnings aus der Reflexion ab?"
- ),
- sub_tasks=ListValue(
- ListBlock(EvaluationSubTaskBlock()),
- values=[
- EvaluationSubTaskBlockFactory(
- title="Die Learnings beziehen sich auf die geleitete Fallarbeit und sind inhaltlich sinnvoll.",
- points=3,
- ),
- EvaluationSubTaskBlockFactory(
- title="Die Learnings beziehen sich grösstenteils auf die geleitete Fallarbeit und sind inhaltlich sinnvoll.",
- points=2,
- ),
- EvaluationSubTaskBlockFactory(
- title="Die Learnings beziehen sich teilweise auf die geleitete Fallarbeit und sind inhaltlich wenig sinnvoll.",
- points=1,
- ),
- EvaluationSubTaskBlockFactory(
- title="Die Learnings beziehen sich nicht auf die geleitete Fallarbeit.",
- points=0,
- ),
- ],
- ),
- ),
- ),
- )
-
- assignment.tasks = []
- assignment.tasks.append(
- (
- "task",
- TaskBlockFactory(
- title="Teilaufgabe 1: Beispiel einer Versicherungspolice finden",
- # 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(
- "Bitte jemand aus deiner Familie oder deinem Freundeskreis darum, dir seine/ihre Motorfahrzeugversicherungspolice zur Verfügung zu stellen."
- )
- ),
- ),
- (
- "user_confirmation",
- ExplanationBlockFactory(
- text=RichText(
- "Ja, ich habe Motorfahrzeugversicherungspolice von jemandem aus meiner Familie oder meinem Freundeskreis erhalten."
- )
- ),
- ),
- ],
- ),
- ),
- )
- )
-
- assignment.tasks.append(
- (
- "task",
- TaskBlockFactory(
- title="Teilaufgabe 2: Kundensituation und Ausgangslage",
- content=StreamValue(
- TaskContentStreamBlock(),
- stream_data=[
- (
- "explanation",
- ExplanationBlockFactory(
- text=RichText(
- replace_whitespace(
- """
- Erläutere die Kundensituation und die Ausgangslage.
-
- - Hast du alle Informationen, die du für den Policen-Check benötigst?
- - Halte die wichtigsten Eckwerte des aktuellen Versicherungsverhältnisse in deiner Dokumentation fest (z.B wie lang wo versichert, Alter des Fahrzeugs, Kundenprofil, etc.
-
- """
- )
- )
- ),
- ),
- ("user_text_input", UserTextInputBlockFactory()),
- ],
- ),
- ),
- )
- )
-
- assignment.tasks.append(
- (
- "task",
- TaskBlockFactory(
- title="Teilaufgabe 3: Aktuelle Versicherung",
- # TODO: add document upload
- content=StreamValue(
- TaskContentStreamBlock(),
- stream_data=[
- (
- "explanation",
- ExplanationBlockFactory(
- text=RichText(
- "Zeige nun detailliert auf, wie dein Kundenbeispiel momentan versichert ist."
- )
- ),
- ),
- ("user_text_input", UserTextInputBlockFactory()),
- ],
- ),
- ),
- )
- )
-
- assignment.tasks.append(
- (
- "task",
- TaskBlockFactory(
- title="Teilaufgabe 4: Deine Empfehlungen",
- content=StreamValue(
- TaskContentStreamBlock(),
- stream_data=[
- (
- "explanation",
- ExplanationBlockFactory(
- text=RichText(
- "Erarbeite nun basierend auf deinen Erkenntnissen eine Empfehlung für die Person."
- )
- ),
- ),
- (
- "user_text_input",
- UserTextInputBlockFactory(
- text=RichText(
- "Gibt es zusätzliche Deckungen, die du der Person empfehlen würdest? Begründe deine Empfehlung"
- )
- ),
- ),
- (
- "user_text_input",
- UserTextInputBlockFactory(
- text=RichText(
- "Gibt es Deckungen, die du streichen würdest? Begründe deine Empfehlung."
- )
- ),
- ),
- (
- "user_text_input",
- UserTextInputBlockFactory(
- text=RichText(
- "Wenn die Person gemäss deiner Einschätzung genau richtig versichert ist, argumentiere, warum dies der Fall ist."
- )
- ),
- ),
- ],
- ),
- ),
- )
- )
-
- assignment.tasks.append(
- (
- "task",
- TaskBlockFactory(
- title="Teilaufgabe 5: Reflexion",
- content=StreamValue(
- TaskContentStreamBlock(),
- stream_data=[
- (
- "explanation",
- ExplanationBlockFactory(
- text=RichText(
- "Reflektiere dein Handeln und halte deine Erkenntnisse fest. Frage dich dabei:"
- )
- ),
- ),
- (
- "user_text_input",
- UserTextInputBlockFactory(
- text=RichText(
- "War die Bearbeitung dieser geleiteten Fallarbeit erfolgreich? Begründe deine Einschätzung."
- )
- ),
- ),
- (
- "user_text_input",
- UserTextInputBlockFactory(
- text=RichText(
- "Was ist dir bei der Bearbeitung des Auftrags gut gelungen?"
- )
- ),
- ),
- (
- "user_text_input",
- UserTextInputBlockFactory(
- text=RichText(
- "Was ist dir bei der Bearbeitung des Auftrags weniger gut gelungen?"
- )
- ),
- ),
- ],
- ),
- ),
- )
- )
-
- assignment.tasks.append(
- (
- "task",
- TaskBlockFactory(
- title="Teilaufgabe 6: Learnings",
- content=StreamValue(
- TaskContentStreamBlock(),
- stream_data=[
- (
- "explanation",
- ExplanationBlockFactory(
- text=RichText(
- "Leite aus der Teilaufgabe 5 deine persönlichen Learnings ab."
- )
- ),
- ),
- (
- "user_text_input",
- UserTextInputBlockFactory(
- text=RichText(
- "Was würdest du beim nächsten Mal anders machen?"
- )
- ),
- ),
- (
- "user_text_input",
- UserTextInputBlockFactory(
- text=RichText(
- "Was hast du beim Bearbeiten des Auftrags Neues gelernt?"
- )
- ),
- ),
- ],
- ),
- ),
- )
- )
-
- assignment.save()
-
- return assignment
-
-
def create_uk_prep_assignment(assignment_list_page, course_id=COURSE_UK):
assignment = AssignmentFactory(
parent=assignment_list_page,
diff --git a/server/vbv_lernwelt/assignment/tests/test_assignment_api.py b/server/vbv_lernwelt/assignment/tests/test_assignment_api.py
index e58cbc79..fd0107d9 100644
--- a/server/vbv_lernwelt/assignment/tests/test_assignment_api.py
+++ b/server/vbv_lernwelt/assignment/tests/test_assignment_api.py
@@ -3,25 +3,29 @@ 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.models import (
- Assignment,
AssignmentCompletion,
AssignmentCompletionAuditLog,
)
+from vbv_lernwelt.assignment.tests.assignment_factories import AssignmentListPageFactory
from vbv_lernwelt.core.create_default_users import create_default_users
from vbv_lernwelt.core.models import User
from vbv_lernwelt.core.utils import find_first
from vbv_lernwelt.course.consts import COURSE_TEST_ID
from vbv_lernwelt.course.creators.test_course import create_test_course
-from vbv_lernwelt.course.models import CourseSession, CourseSessionUser
+from vbv_lernwelt.course.models import CoursePage, CourseSession, CourseSessionUser
class AssignmentApiTestCase(APITestCase):
def setUp(self) -> None:
create_default_users()
create_test_course(include_vv=False)
-
- self.assignment = Assignment.objects.first()
+ course_page = CoursePage.objects.get(course_id=COURSE_TEST_ID)
+ assignment_list_page = AssignmentListPageFactory(
+ parent=course_page,
+ )
+ self.assignment = create_uk_casework(assignment_list_page=assignment_list_page)
self.assignment_subtasks = self.assignment.filter_user_subtasks()
self.cs = CourseSession.objects.create(
diff --git a/server/vbv_lernwelt/assignment/tests/test_services.py b/server/vbv_lernwelt/assignment/tests/test_services.py
index 1370fdaf..33936a52 100644
--- a/server/vbv_lernwelt/assignment/tests/test_services.py
+++ b/server/vbv_lernwelt/assignment/tests/test_services.py
@@ -4,12 +4,13 @@ from django.test import TestCase
from django.utils import timezone
from rest_framework import serializers
-from vbv_lernwelt.assignment.creators.create_assignments import create_test_assignment
+from vbv_lernwelt.assignment.creators.create_assignments import create_uk_casework
from vbv_lernwelt.assignment.models import (
AssignmentCompletion,
AssignmentCompletionAuditLog,
)
from vbv_lernwelt.assignment.services import update_assignment_completion
+from vbv_lernwelt.assignment.tests.assignment_factories import AssignmentListPageFactory
from vbv_lernwelt.core.create_default_users import create_default_users
from vbv_lernwelt.core.models import User
from vbv_lernwelt.core.tests.helpers import create_locales_for_wagtail
@@ -27,7 +28,10 @@ class UpdateAssignmentCompletionTestCase(TestCase):
id=COURSE_TEST_ID,
)
course_page = CoursePageFactory(course=course)
- self.assignment = create_test_assignment()
+ assignment_list_page = AssignmentListPageFactory(
+ parent=course_page,
+ )
+ self.assignment = create_uk_casework(assignment_list_page=assignment_list_page)
self.course_session = CourseSession.objects.create(
course_id=COURSE_TEST_ID,
title="Bern 2022 a",
diff --git a/server/vbv_lernwelt/course/creators/test_course.py b/server/vbv_lernwelt/course/creators/test_course.py
index 41328c20..07734ccc 100644
--- a/server/vbv_lernwelt/course/creators/test_course.py
+++ b/server/vbv_lernwelt/course/creators/test_course.py
@@ -6,9 +6,13 @@ from slugify import slugify
from wagtail.models import Site
from wagtail.rich_text import RichText
-from vbv_lernwelt.assignment.creators.create_assignments import create_test_assignment
+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.factories import (
CompetencePageFactory,
CompetenceProfilePageFactory,
@@ -63,7 +67,13 @@ def create_test_course(include_uk=True, include_vv=True, with_sessions=False):
create_test_competence_profile()
if include_uk:
- create_test_assignment()
+ # assignments
+ course_page = CoursePage.objects.get(course_id=COURSE_TEST_ID)
+ assignment_list_page = AssignmentListPageFactory(
+ parent=course_page,
+ )
+ create_uk_casework(assignment_list_page=assignment_list_page)
+ create_uk_prep_assignment(assignment_list_page=assignment_list_page)
create_test_learning_path(include_uk=include_uk, include_vv=include_vv)
create_test_media_library()
@@ -230,7 +240,7 @@ damit du erfolgreich mit deinem Lernpfad (durch-)starten kannst.
assignment_type="PREP_ASSIGNMENT",
parent=circle,
content_assignment=Assignment.objects.get(
- slug__startswith="überbetriebliche-kurse-assignment-fahrzeug-mein-erstes-auto"
+ slug__startswith="test-lehrgang-assignment-fahrzeug-mein-erstes-auto"
),
),