Make assignment creation more generic
This commit is contained in:
parent
0f0d1632a7
commit
321c57b709
|
|
@ -1,8 +1,5 @@
|
|||
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,
|
||||
EvaluationSubTaskBlock,
|
||||
TaskContentStreamBlock,
|
||||
|
|
@ -18,9 +15,20 @@ 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(assignment_list_page, course_id=COURSE_UK):
|
||||
def create_uk_casework(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,
|
||||
title="Überprüfen einer Motorfahrzeugs-Versicherungspolice",
|
||||
|
|
@ -457,7 +465,14 @@ def create_uk_casework(assignment_list_page, course_id=COURSE_UK):
|
|||
return assignment
|
||||
|
||||
|
||||
def create_uk_prep_assignment(assignment_list_page, course_id=COURSE_UK):
|
||||
def create_uk_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,
|
||||
|
|
@ -765,11 +780,18 @@ def create_uk_prep_assignment(assignment_list_page, course_id=COURSE_UK):
|
|||
return assignment
|
||||
|
||||
|
||||
def create_uk_reflection(assignment_list_page, course_id=COURSE_UK):
|
||||
def create_uk_reflection(course_id=COURSE_UK, circle_title="Fahrzeug"):
|
||||
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.REFLECTION.name,
|
||||
title="Reflexionsfragen - Fahrzeug",
|
||||
title=f"{circle_title} - Reflexionsfragen",
|
||||
effort_required="ca. 1 Stunde",
|
||||
intro_text=replace_whitespace(
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -8,24 +8,19 @@ from vbv_lernwelt.assignment.models import (
|
|||
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 CoursePage, CourseSession, CourseSessionUser
|
||||
from vbv_lernwelt.course.models import CourseSession, CourseSessionUser
|
||||
|
||||
|
||||
class AssignmentApiTestCase(APITestCase):
|
||||
def setUp(self) -> None:
|
||||
create_default_users()
|
||||
create_test_course(include_vv=False)
|
||||
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 = create_uk_casework(course_id=COURSE_TEST_ID)
|
||||
self.assignment_subtasks = self.assignment.filter_user_subtasks()
|
||||
|
||||
self.cs = CourseSession.objects.create(
|
||||
|
|
|
|||
|
|
@ -4,34 +4,32 @@ from django.test import TestCase
|
|||
from django.utils import timezone
|
||||
from rest_framework import serializers
|
||||
|
||||
from vbv_lernwelt.assignment.creators.create_assignments import create_uk_casework
|
||||
from vbv_lernwelt.assignment.models import (
|
||||
Assignment,
|
||||
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
|
||||
from vbv_lernwelt.core.utils import find_first
|
||||
from vbv_lernwelt.course.consts import COURSE_TEST_ID
|
||||
from vbv_lernwelt.course.factories import CourseFactory, CoursePageFactory
|
||||
from vbv_lernwelt.course.creators.test_course import create_test_course
|
||||
from vbv_lernwelt.course.models import CourseSession
|
||||
from vbv_lernwelt.learnpath.models import LearningContentAssignment
|
||||
|
||||
|
||||
class UpdateAssignmentCompletionTestCase(TestCase):
|
||||
def setUp(self):
|
||||
create_default_users()
|
||||
create_locales_for_wagtail()
|
||||
course = CourseFactory(
|
||||
id=COURSE_TEST_ID,
|
||||
self.course = create_test_course(include_vv=False)
|
||||
self.assignment = (
|
||||
self.course.coursepage.get_descendants()
|
||||
.exact_type(Assignment)
|
||||
.filter(assignment__assignment_type="CASEWORK")
|
||||
.first()
|
||||
.specific
|
||||
)
|
||||
course_page = CoursePageFactory(course=course)
|
||||
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",
|
||||
|
|
@ -186,19 +184,22 @@ class UpdateAssignmentCompletionTestCase(TestCase):
|
|||
self.assertEqual(acl.assignment_user_email, "student")
|
||||
self.assertEqual(
|
||||
acl.assignment_slug,
|
||||
"versicherungsvermittler-in-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice",
|
||||
"test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice",
|
||||
)
|
||||
|
||||
# AssignmentCompletionAuditLog entry will remain event after deletion of foreign keys
|
||||
ac.delete()
|
||||
self.user.delete()
|
||||
self.course.coursepage.get_descendants().exact_type(
|
||||
LearningContentAssignment
|
||||
).delete()
|
||||
self.assignment.delete()
|
||||
acl = AssignmentCompletionAuditLog.objects.get(id=acl.id)
|
||||
self.assertEqual(acl.created_at.date(), date.today())
|
||||
self.assertEqual(acl.assignment_user_email, "student")
|
||||
self.assertEqual(
|
||||
acl.assignment_slug,
|
||||
"versicherungsvermittler-in-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice",
|
||||
"test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice",
|
||||
)
|
||||
self.assertIsNone(acl.assignment_user)
|
||||
self.assertIsNone(acl.assignment)
|
||||
|
|
@ -520,7 +521,7 @@ class UpdateAssignmentCompletionTestCase(TestCase):
|
|||
self.assertEqual(acl.assignment_user_email, "student")
|
||||
self.assertEqual(
|
||||
acl.assignment_slug,
|
||||
"versicherungsvermittler-in-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice",
|
||||
"test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice",
|
||||
)
|
||||
trainer_input = acl.completion_data[evaluation_task["id"]]
|
||||
self.assertDictEqual(
|
||||
|
|
@ -534,13 +535,16 @@ class UpdateAssignmentCompletionTestCase(TestCase):
|
|||
# AssignmentCompletionAuditLog entry will remain event after deletion of foreign keys
|
||||
ac.delete()
|
||||
self.user.delete()
|
||||
self.course.coursepage.get_descendants().exact_type(
|
||||
LearningContentAssignment
|
||||
).delete()
|
||||
self.assignment.delete()
|
||||
acl = AssignmentCompletionAuditLog.objects.get(id=acl.id)
|
||||
self.assertEqual(acl.created_at.date(), date.today())
|
||||
self.assertEqual(acl.assignment_user_email, "student")
|
||||
self.assertEqual(
|
||||
acl.assignment_slug,
|
||||
"versicherungsvermittler-in-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice",
|
||||
"test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice",
|
||||
)
|
||||
self.assertIsNone(acl.assignment_user)
|
||||
self.assertIsNone(acl.assignment)
|
||||
|
|
|
|||
|
|
@ -67,13 +67,13 @@ def create_test_course(include_uk=True, include_vv=True, with_sessions=False):
|
|||
|
||||
create_test_competence_profile()
|
||||
if include_uk:
|
||||
# assignments
|
||||
# assignments create assignments parent page
|
||||
course_page = CoursePage.objects.get(course_id=COURSE_TEST_ID)
|
||||
assignment_list_page = AssignmentListPageFactory(
|
||||
_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_uk_casework(course_id=COURSE_TEST_ID)
|
||||
create_uk_prep_assignment(course_id=COURSE_TEST_ID)
|
||||
|
||||
create_test_learning_path(include_uk=include_uk, include_vv=include_vv)
|
||||
create_test_media_library()
|
||||
|
|
@ -215,14 +215,14 @@ damit du erfolgreich mit deinem Lernpfad (durch-)starten kannst.
|
|||
parent=circle,
|
||||
text=RichText(
|
||||
"""
|
||||
<h3>Arbeitsblätter «Vorbereitungsauftrag»</h3>
|
||||
<p>Handlungskompetenz d2: Informations-und Beratungsgespräch mit Kunden oder Lieferanten führen</p>
|
||||
<p>Arbeitssituation 4: Kunden beraten und dazugehörige Prozesse abwickeln</p>
|
||||
<p>Die Kaufleute führen Bedarfserhebungen für Kunden durch und schlagen ihnen angemessene Versicherungslösungen vor. Sie führen Beratungs-und Verkaufsgespräche und erteilen Auskünfte. Sieführen Kundenaufträge aus und behandeln Beschwerden. Sie formulieren Aufträge an relevante Anspruchsgruppen und unterstützen den Aussendient in verkaufsrelevanten Belangen.</p>
|
||||
<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>
|
||||
<h3>Arbeitsblätter «Vorbereitungsauftrag»</h3>
|
||||
<p>Handlungskompetenz d2: Informations-und Beratungsgespräch mit Kunden oder Lieferanten führen</p>
|
||||
<p>Arbeitssituation 4: Kunden beraten und dazugehörige Prozesse abwickeln</p>
|
||||
<p>Die Kaufleute führen Bedarfserhebungen für Kunden durch und schlagen ihnen angemessene Versicherungslösungen vor. Sie führen Beratungs-und Verkaufsgespräche und erteilen Auskünfte. Sieführen Kundenaufträge aus und behandeln Beschwerden. Sie formulieren Aufträge an relevante Anspruchsgruppen und unterstützen den Aussendient in verkaufsrelevanten Belangen.</p>
|
||||
<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>
|
||||
"""
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -59,3 +59,5 @@ def create_versicherungsvermittlerin_with_categories(
|
|||
)
|
||||
course.slug = course_page.slug
|
||||
course.save()
|
||||
|
||||
return course
|
||||
|
|
|
|||
|
|
@ -150,18 +150,17 @@ def create_versicherungsvermittlerin_course():
|
|||
|
||||
def create_course_uk_de():
|
||||
# Überbetriebliche Kurse DE
|
||||
create_versicherungsvermittlerin_with_categories(
|
||||
course = create_versicherungsvermittlerin_with_categories(
|
||||
course_id=COURSE_UK, title="Überbetriebliche Kurse"
|
||||
)
|
||||
|
||||
# assignments
|
||||
course_page = CoursePage.objects.get(course_id=COURSE_UK)
|
||||
assignment_list_page = AssignmentListPageFactory(
|
||||
parent=course_page,
|
||||
# assignments create assignments parent page
|
||||
_assignment_list_page = AssignmentListPageFactory(
|
||||
parent=course.coursepage,
|
||||
)
|
||||
create_uk_casework(assignment_list_page, course_id=COURSE_UK)
|
||||
create_uk_prep_assignment(assignment_list_page, course_id=COURSE_UK)
|
||||
create_uk_reflection(assignment_list_page, course_id=COURSE_UK)
|
||||
create_uk_casework(course_id=COURSE_UK)
|
||||
create_uk_prep_assignment(course_id=COURSE_UK)
|
||||
create_uk_reflection(course_id=COURSE_UK)
|
||||
|
||||
# learning path
|
||||
create_uk_learning_path(course_id=COURSE_UK)
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ from vbv_lernwelt.learnpath.tests.learning_path_factories import (
|
|||
LearningContentFeedbackFactory,
|
||||
LearningContentMediaLibraryFactory,
|
||||
LearningContentPlaceholderFactory,
|
||||
LearningContentRichTextFactory,
|
||||
LearningPathFactory,
|
||||
LearningSequenceFactory,
|
||||
LearningUnitFactory,
|
||||
|
|
@ -230,9 +231,21 @@ damit du erfolgreich mit deinem Lernpfad (durch-)starten kannst.
|
|||
title="Vorbereitung", parent=circle, icon="it-icon-ls-start"
|
||||
)
|
||||
LearningUnitFactory(title="Vorbereitung", parent=circle)
|
||||
LearningContentPlaceholderFactory(
|
||||
LearningContentRichTextFactory(
|
||||
title="Verschaffe dir einen Überblick",
|
||||
parent=circle,
|
||||
text=RichText(
|
||||
"""
|
||||
<h3>Arbeitsblätter «Vorbereitungsauftrag»</h3>
|
||||
<p>Handlungskompetenz d2: Informations-und Beratungsgespräch mit Kunden oder Lieferanten führen</p>
|
||||
<p>Arbeitssituation 4: Kunden beraten und dazugehörige Prozesse abwickeln</p>
|
||||
<p>Die Kaufleute führen Bedarfserhebungen für Kunden durch und schlagen ihnen angemessene Versicherungslösungen vor. Sie führen Beratungs-und Verkaufsgespräche und erteilen Auskünfte. Sieführen Kundenaufträge aus und behandeln Beschwerden. Sie formulieren Aufträge an relevante Anspruchsgruppen und unterstützen den Aussendient in verkaufsrelevanten Belangen.</p>
|
||||
<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>
|
||||
"""
|
||||
),
|
||||
)
|
||||
LearningContentMediaLibraryFactory(
|
||||
title=f"Handlungsfeld «{title}»",
|
||||
|
|
@ -274,7 +287,7 @@ damit du erfolgreich mit deinem Lernpfad (durch-)starten kannst.
|
|||
assignment_type="REFLECTION",
|
||||
parent=circle,
|
||||
content_assignment=Assignment.objects.get(
|
||||
slug__startswith="überbetriebliche-kurse-assignment-reflexionsfragen-fahrzeug"
|
||||
slug__startswith="überbetriebliche-kurse-assignment-fahrzeug-reflexionsfragen"
|
||||
),
|
||||
),
|
||||
LearningContentAssignmentFactory(
|
||||
|
|
|
|||
Loading…
Reference in New Issue