Serialize LearningPath with PerformanceCriteria
This commit is contained in:
parent
8cfde35704
commit
5284d6f1cf
|
|
@ -15,20 +15,20 @@ def create_default_competence_profile():
|
||||||
|
|
||||||
PerformanceCriteriaFactory(
|
PerformanceCriteriaFactory(
|
||||||
parent=competence_profile_page,
|
parent=competence_profile_page,
|
||||||
title='B1.3 Fahrzeug',
|
pc_id='B1.3 Fahrzeug',
|
||||||
text='Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, die Ziele und Pläne des Kunden zu ergründen (SOLL).',
|
title='Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, die Ziele und Pläne des Kunden zu ergründen (SOLL).',
|
||||||
learning_unit=LearningUnit.objects.get(slug='versicherungsvermittlerin-lp-circle-analyse-lu-fahrzeug'),
|
learning_unit=LearningUnit.objects.get(slug='versicherungsvermittlerin-lp-circle-analyse-lu-fahrzeug'),
|
||||||
)
|
)
|
||||||
PerformanceCriteriaFactory(
|
PerformanceCriteriaFactory(
|
||||||
parent=competence_profile_page,
|
parent=competence_profile_page,
|
||||||
title='B2.1 Fahrzeug',
|
pc_id='B2.1 Fahrzeug',
|
||||||
text='Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, die IST-Situation des Kunden mit der geeigneten Gesprächs-/Fragetechnik zu erfassen.',
|
title='Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, die IST-Situation des Kunden mit der geeigneten Gesprächs-/Fragetechnik zu erfassen.',
|
||||||
learning_unit=LearningUnit.objects.get(slug='versicherungsvermittlerin-lp-circle-analyse-lu-fahrzeug'),
|
learning_unit=LearningUnit.objects.get(slug='versicherungsvermittlerin-lp-circle-analyse-lu-fahrzeug'),
|
||||||
)
|
)
|
||||||
PerformanceCriteriaFactory(
|
PerformanceCriteriaFactory(
|
||||||
parent=competence_profile_page,
|
parent=competence_profile_page,
|
||||||
title='B2.2 Fahrzeug',
|
pc_id='B2.2 Fahrzeug',
|
||||||
text='Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, die Risiken aufzuzeigen.',
|
title='Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, die Risiken aufzuzeigen.',
|
||||||
learning_unit=LearningUnit.objects.get(slug='versicherungsvermittlerin-lp-circle-analyse-lu-fahrzeug'),
|
learning_unit=LearningUnit.objects.get(slug='versicherungsvermittlerin-lp-circle-analyse-lu-fahrzeug'),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,8 @@ class CompetenceProfilePageFactory(wagtail_factories.PageFactory):
|
||||||
|
|
||||||
|
|
||||||
class PerformanceCriteriaFactory(wagtail_factories.PageFactory):
|
class PerformanceCriteriaFactory(wagtail_factories.PageFactory):
|
||||||
title = 'A.1'
|
pc_id = 'A.1'
|
||||||
text = 'Bestehende Kunden so zu beraten, dass sie von diesen weiterempfohlen werden'
|
title = 'Bestehende Kunden so zu beraten, dass sie von diesen weiterempfohlen werden'
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = PerformanceCriteria
|
model = PerformanceCriteria
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 3.2.13 on 2022-09-27 14:26
|
# Generated by Django 3.2.13 on 2022-09-27 15:49
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
|
@ -9,6 +9,7 @@ class Migration(migrations.Migration):
|
||||||
initial = True
|
initial = True
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
('learnpath', '0001_initial'),
|
||||||
('wagtailcore', '0069_log_entry_jsonfield'),
|
('wagtailcore', '0069_log_entry_jsonfield'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -27,7 +28,8 @@ class Migration(migrations.Migration):
|
||||||
name='PerformanceCriteria',
|
name='PerformanceCriteria',
|
||||||
fields=[
|
fields=[
|
||||||
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
|
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
|
||||||
('text', models.TextField(default='')),
|
('pc_id', models.TextField(default='')),
|
||||||
|
('learning_unit', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='learnpath.learningunit')),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'abstract': False,
|
'abstract': False,
|
||||||
|
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
# Generated by Django 3.2.13 on 2022-09-27 14:26
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
initial = True
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('learnpath', '0001_initial'),
|
|
||||||
('competence', '0001_initial'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='performancecriteria',
|
|
||||||
name='learning_unit',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='learnpath.learningunit'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -32,7 +32,7 @@ class CompetenceProfilePage(Page):
|
||||||
|
|
||||||
class PerformanceCriteria(Page):
|
class PerformanceCriteria(Page):
|
||||||
parent_page_types = ['competence.CompetenceProfilePage']
|
parent_page_types = ['competence.CompetenceProfilePage']
|
||||||
text = models.TextField(default='')
|
pc_id = models.TextField(default='')
|
||||||
learning_unit = models.ForeignKey(
|
learning_unit = models.ForeignKey(
|
||||||
'learnpath.LearningUnit',
|
'learnpath.LearningUnit',
|
||||||
null=True,
|
null=True,
|
||||||
|
|
@ -42,7 +42,7 @@ class PerformanceCriteria(Page):
|
||||||
|
|
||||||
content_panels = [
|
content_panels = [
|
||||||
FieldPanel('title'),
|
FieldPanel('title'),
|
||||||
FieldPanel('text'),
|
FieldPanel('pc_id'),
|
||||||
FieldPanel('learning_unit'),
|
FieldPanel('learning_unit'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -52,5 +52,8 @@ class PerformanceCriteria(Page):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_serializer_class(cls):
|
def get_serializer_class(cls):
|
||||||
from vbv_lernwelt.competence.serializers import PerfomanceCriteriaSerializer
|
from vbv_lernwelt.competence.serializers import PerformanceCriteriaSerializer
|
||||||
return PerfomanceCriteriaSerializer
|
return PerformanceCriteriaSerializer
|
||||||
|
|
||||||
|
def get_admin_display_title(self):
|
||||||
|
return f'{self.pc_id} {self.draft_title[:30]}'
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,28 @@
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from vbv_lernwelt.competence.models import PerformanceCriteria
|
from vbv_lernwelt.competence.models import PerformanceCriteria
|
||||||
|
from vbv_lernwelt.learnpath.models import LearningUnit
|
||||||
from vbv_lernwelt.learnpath.serializer_helpers import get_it_serializer_class
|
from vbv_lernwelt.learnpath.serializer_helpers import get_it_serializer_class
|
||||||
|
|
||||||
|
|
||||||
class PerfomanceCriteriaSerializer(get_it_serializer_class(PerformanceCriteria, [
|
class PerformanceCriteriaSerializer(get_it_serializer_class(PerformanceCriteria, [
|
||||||
'id', 'title', 'slug', 'type', 'translation_key',
|
'id', 'title', 'slug', 'type', 'translation_key',
|
||||||
'text', 'learning_unit', 'circle',
|
'pc_id', 'learning_unit', 'circle',
|
||||||
])):
|
])):
|
||||||
learning_unit = serializers.SerializerMethodField()
|
learning_unit = serializers.SerializerMethodField()
|
||||||
circle = serializers.SerializerMethodField()
|
circle = serializers.SerializerMethodField()
|
||||||
|
|
||||||
def get_learning_unit(self, obj):
|
def get_learning_unit(self, obj):
|
||||||
learning_unit_serializer = obj.learning_unit.get_serializer_class()
|
learning_unit_serializer = get_it_serializer_class(LearningUnit, [
|
||||||
|
'id', 'title', 'slug', 'type', 'translation_key',
|
||||||
|
])
|
||||||
return learning_unit_serializer(obj.learning_unit).data
|
return learning_unit_serializer(obj.learning_unit).data
|
||||||
|
|
||||||
def get_circle(self, obj):
|
def get_circle(self, obj):
|
||||||
return obj.learning_unit.get_parent().specific.title
|
return obj.learning_unit.get_parent().specific.title
|
||||||
|
|
||||||
|
|
||||||
|
class PerformanceCriteriaLearningPathSerializer(get_it_serializer_class(PerformanceCriteria, [
|
||||||
|
'id', 'title', 'slug', 'type', 'translation_key', 'pc_id',
|
||||||
|
])):
|
||||||
|
pass
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,11 @@ from wagtail_localize.models import LocaleSynchronization
|
||||||
from vbv_lernwelt.core.admin import User
|
from vbv_lernwelt.core.admin import User
|
||||||
from vbv_lernwelt.course.consts import COURSE_VERSICHERUNGSVERMITTLERIN
|
from vbv_lernwelt.course.consts import COURSE_VERSICHERUNGSVERMITTLERIN
|
||||||
from vbv_lernwelt.course.models import CoursePage, CourseCategory
|
from vbv_lernwelt.course.models import CoursePage, CourseCategory
|
||||||
from vbv_lernwelt.learnpath.models import LearningPath, Topic, Circle, LearningSequence, LearningContent, LearningUnit, \
|
from vbv_lernwelt.learnpath.models import LearningPath, Topic, Circle, LearningSequence, LearningContent, LearningUnit
|
||||||
LearningUnitQuestion
|
|
||||||
from vbv_lernwelt.learnpath.tests.learning_path_factories import LearningPathFactory, TopicFactory, CircleFactory, \
|
from vbv_lernwelt.learnpath.tests.learning_path_factories import LearningPathFactory, TopicFactory, CircleFactory, \
|
||||||
LearningSequenceFactory, LearningContentFactory, VideoBlockFactory, ResourceBlockFactory, \
|
LearningSequenceFactory, LearningContentFactory, VideoBlockFactory, ResourceBlockFactory, \
|
||||||
ExerciseBlockFactory, DocumentBlockFactory, LearningUnitFactory, LearningUnitQuestionFactory, \
|
ExerciseBlockFactory, DocumentBlockFactory, LearningUnitFactory, AssignmentBlockFactory, BookBlockFactory, \
|
||||||
AssignmentBlockFactory, BookBlockFactory, MediaLibraryBlockFactory, OnlineTrainingBlockFactory, TestBlockFactory
|
MediaLibraryBlockFactory, OnlineTrainingBlockFactory, TestBlockFactory
|
||||||
|
|
||||||
|
|
||||||
def create_circle(title, learning_path):
|
def create_circle(title, learning_path):
|
||||||
|
|
@ -65,14 +64,6 @@ def create_circle_children(circle, title):
|
||||||
parent=circle,
|
parent=circle,
|
||||||
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN, title='Einkommenssicherung')
|
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN, title='Einkommenssicherung')
|
||||||
)
|
)
|
||||||
LearningUnitQuestionFactory(
|
|
||||||
title="Ich bin in der Lage, mit geeigneten Fragestellungen die Deckung von Versicherungen zu erfassen.",
|
|
||||||
parent=lu
|
|
||||||
)
|
|
||||||
LearningUnitQuestionFactory(
|
|
||||||
title="Zweite passende Frage zu 'Absicherung der Familie'",
|
|
||||||
parent=lu
|
|
||||||
)
|
|
||||||
LearningContentFactory(
|
LearningContentFactory(
|
||||||
title='Ermittlung des Kundenbedarfs',
|
title='Ermittlung des Kundenbedarfs',
|
||||||
parent=circle,
|
parent=circle,
|
||||||
|
|
@ -127,10 +118,6 @@ def create_circle_children(circle, title):
|
||||||
title='Prämien einsparen',
|
title='Prämien einsparen',
|
||||||
parent=circle,
|
parent=circle,
|
||||||
)
|
)
|
||||||
LearningUnitQuestionFactory(
|
|
||||||
title="Passende Frage zu Anwenden",
|
|
||||||
parent=lu
|
|
||||||
)
|
|
||||||
LearningContentFactory(
|
LearningContentFactory(
|
||||||
title='Versicherungsbedarf für Familien',
|
title='Versicherungsbedarf für Familien',
|
||||||
parent=circle,
|
parent=circle,
|
||||||
|
|
@ -149,10 +136,6 @@ def create_circle_children(circle, title):
|
||||||
parent=circle,
|
parent=circle,
|
||||||
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN, title='Selbständigkeit')
|
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN, title='Selbständigkeit')
|
||||||
)
|
)
|
||||||
LearningUnitQuestionFactory(
|
|
||||||
title="Passende Frage zu 'Sich selbständig machen'",
|
|
||||||
parent=lu
|
|
||||||
)
|
|
||||||
LearningContentFactory(
|
LearningContentFactory(
|
||||||
title='GmbH oder AG',
|
title='GmbH oder AG',
|
||||||
parent=circle,
|
parent=circle,
|
||||||
|
|
@ -171,10 +154,6 @@ def create_circle_children(circle, title):
|
||||||
parent=circle,
|
parent=circle,
|
||||||
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN, title='Fahrzeug')
|
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN, title='Fahrzeug')
|
||||||
)
|
)
|
||||||
LearningUnitQuestionFactory(
|
|
||||||
title='Passende Frage zu "Auto verkaufen"',
|
|
||||||
parent=lu
|
|
||||||
)
|
|
||||||
LearningContentFactory(
|
LearningContentFactory(
|
||||||
title='Motorfahrzeugversicherung',
|
title='Motorfahrzeugversicherung',
|
||||||
parent=circle,
|
parent=circle,
|
||||||
|
|
@ -205,10 +184,6 @@ def create_circle_children(circle, title):
|
||||||
parent=circle,
|
parent=circle,
|
||||||
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN, title='Pensionierung')
|
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN, title='Pensionierung')
|
||||||
)
|
)
|
||||||
LearningUnitQuestionFactory(
|
|
||||||
title='Passende Frage zu "Pensionierung"',
|
|
||||||
parent=lu
|
|
||||||
)
|
|
||||||
LearningContentFactory(
|
LearningContentFactory(
|
||||||
title='3-Säulen-Prinzip',
|
title='3-Säulen-Prinzip',
|
||||||
parent=circle,
|
parent=circle,
|
||||||
|
|
@ -239,10 +214,6 @@ def create_circle_children(circle, title):
|
||||||
parent=circle,
|
parent=circle,
|
||||||
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN, title='Reisen')
|
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN, title='Reisen')
|
||||||
)
|
)
|
||||||
LearningUnitQuestionFactory(
|
|
||||||
title='Passende Frage zu "Reisen"',
|
|
||||||
parent=lu
|
|
||||||
)
|
|
||||||
LearningContentFactory(
|
LearningContentFactory(
|
||||||
title='Reiseversicherung',
|
title='Reiseversicherung',
|
||||||
parent=circle,
|
parent=circle,
|
||||||
|
|
@ -262,10 +233,6 @@ def create_circle_children(circle, title):
|
||||||
parent=circle,
|
parent=circle,
|
||||||
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN, title='Haushalt')
|
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN, title='Haushalt')
|
||||||
)
|
)
|
||||||
LearningUnitQuestionFactory(
|
|
||||||
title='Passende Frage zu "Haushalt"',
|
|
||||||
parent=lu
|
|
||||||
)
|
|
||||||
LearningContentFactory(
|
LearningContentFactory(
|
||||||
title='Privathaftpflicht',
|
title='Privathaftpflicht',
|
||||||
parent=circle,
|
parent=circle,
|
||||||
|
|
@ -291,10 +258,6 @@ def create_circle_children(circle, title):
|
||||||
parent=circle,
|
parent=circle,
|
||||||
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN, title='Einkommenssicherung')
|
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN, title='Einkommenssicherung')
|
||||||
)
|
)
|
||||||
LearningUnitQuestionFactory(
|
|
||||||
title='Passende Frage zu "Kind zieht von zu Hause aus"',
|
|
||||||
parent=lu
|
|
||||||
)
|
|
||||||
LearningContentFactory(
|
LearningContentFactory(
|
||||||
title='Hausrat',
|
title='Hausrat',
|
||||||
parent=circle,
|
parent=circle,
|
||||||
|
|
@ -320,10 +283,6 @@ def create_circle_children(circle, title):
|
||||||
parent=circle,
|
parent=circle,
|
||||||
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN, title='Einkommenssicherung')
|
course_category=CourseCategory.objects.get(course_id=COURSE_VERSICHERUNGSVERMITTLERIN, title='Einkommenssicherung')
|
||||||
)
|
)
|
||||||
LearningUnitQuestionFactory(
|
|
||||||
title='Passende Frage zu "Kind zieht von zu Hause aus"',
|
|
||||||
parent=lu
|
|
||||||
)
|
|
||||||
LearningContentFactory(
|
LearningContentFactory(
|
||||||
title='Das erwartet dich im Test',
|
title='Das erwartet dich im Test',
|
||||||
parent=circle,
|
parent=circle,
|
||||||
|
|
@ -488,7 +447,6 @@ Neukundinnen und -kunden.""",
|
||||||
|
|
||||||
def delete_default_learning_path():
|
def delete_default_learning_path():
|
||||||
LearningContent.objects.all().delete()
|
LearningContent.objects.all().delete()
|
||||||
LearningUnitQuestion.objects.all().delete()
|
|
||||||
LearningUnit.objects.all().delete()
|
LearningUnit.objects.all().delete()
|
||||||
LearningSequence.objects.all().delete()
|
LearningSequence.objects.all().delete()
|
||||||
Circle.objects.all().delete()
|
Circle.objects.all().delete()
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 3.2.13 on 2022-09-27 14:26
|
# Generated by Django 3.2.13 on 2022-09-27 15:23
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
|
@ -64,16 +64,6 @@ class Migration(migrations.Migration):
|
||||||
},
|
},
|
||||||
bases=('wagtailcore.page',),
|
bases=('wagtailcore.page',),
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
|
||||||
name='LearningUnitQuestion',
|
|
||||||
fields=[
|
|
||||||
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
'verbose_name': 'Learning Unit Question',
|
|
||||||
},
|
|
||||||
bases=('wagtailcore.page',),
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='Topic',
|
name='Topic',
|
||||||
fields=[
|
fields=[
|
||||||
|
|
|
||||||
|
|
@ -195,34 +195,13 @@ class LearningUnit(Page):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_serializer_class(cls):
|
def get_serializer_class(cls):
|
||||||
return get_it_serializer_class(cls, field_names=[
|
from vbv_lernwelt.learnpath.serializers import LearningUnitSerializer
|
||||||
'id', 'title', 'slug', 'type', 'translation_key', 'children',
|
return LearningUnitSerializer
|
||||||
'course_category',
|
|
||||||
])
|
|
||||||
|
|
||||||
def get_admin_display_title_html(self):
|
def get_admin_display_title_html(self):
|
||||||
return f'<span style="font-weight: 700; font-size: 20px;">{self.draft_title}</span>'
|
return f'<span style="font-weight: 700; font-size: 20px;">{self.draft_title}</span>'
|
||||||
|
|
||||||
|
|
||||||
class LearningUnitQuestion(Page):
|
|
||||||
parent_page_types = ['learnpath.LearningUnit']
|
|
||||||
subpage_types = []
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
verbose_name = "Learning Unit Question"
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"{self.title}"
|
|
||||||
|
|
||||||
def full_clean(self, *args, **kwargs):
|
|
||||||
self.slug = find_slug_with_parent_prefix(self, 'luq')
|
|
||||||
super(LearningUnitQuestion, self).full_clean(*args, **kwargs)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def get_serializer_class(cls):
|
|
||||||
return get_it_serializer_class(cls, field_names=['id', 'title', 'slug', 'type', 'translation_key', ])
|
|
||||||
|
|
||||||
|
|
||||||
class LearningContent(Page):
|
class LearningContent(Page):
|
||||||
parent_page_types = ['learnpath.Circle']
|
parent_page_types = ['learnpath.Circle']
|
||||||
subpage_types = []
|
subpage_types = []
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
from vbv_lernwelt.competence.serializers import PerformanceCriteriaLearningPathSerializer
|
||||||
|
from vbv_lernwelt.learnpath.models import LearningUnit
|
||||||
|
from vbv_lernwelt.learnpath.serializer_helpers import get_it_serializer_class
|
||||||
|
|
||||||
|
|
||||||
|
class LearningUnitSerializer(get_it_serializer_class(LearningUnit, [
|
||||||
|
'id', 'title', 'slug', 'type', 'translation_key',
|
||||||
|
'course_category', 'children',
|
||||||
|
])):
|
||||||
|
def get_children(self, obj):
|
||||||
|
return [
|
||||||
|
PerformanceCriteriaLearningPathSerializer(child).data
|
||||||
|
for child in obj.performancecriteria_set.all()
|
||||||
|
]
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
import wagtail_factories
|
import wagtail_factories
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from wagtail.models import Site, Page
|
from wagtail.models import Site, Page
|
||||||
|
|
||||||
from vbv_lernwelt.core.admin import User
|
from vbv_lernwelt.core.admin import User
|
||||||
from vbv_lernwelt.learnpath.tests.learning_path_factories import LearningPathFactory, TopicFactory, CircleFactory, \
|
from vbv_lernwelt.learnpath.tests.learning_path_factories import LearningPathFactory, TopicFactory, CircleFactory, \
|
||||||
LearningSequenceFactory, LearningContentFactory, \
|
LearningSequenceFactory, LearningContentFactory, \
|
||||||
ExerciseBlockFactory, LearningUnitFactory, LearningUnitQuestionFactory, \
|
ExerciseBlockFactory, LearningUnitFactory, DocumentBlockFactory, TestBlockFactory, OnlineTrainingBlockFactory
|
||||||
DocumentBlockFactory, TestBlockFactory, OnlineTrainingBlockFactory
|
|
||||||
|
|
||||||
|
|
||||||
def create_circle(title, learning_path):
|
def create_circle(title, learning_path):
|
||||||
|
|
@ -41,14 +41,6 @@ def create_circle_children(circle, title):
|
||||||
title='Absicherung der Familie',
|
title='Absicherung der Familie',
|
||||||
parent=circle,
|
parent=circle,
|
||||||
)
|
)
|
||||||
LearningUnitQuestionFactory(
|
|
||||||
title="Ich bin in der Lage, mit geeigneten Fragestellungen die Deckung von Versicherungen zu erfassen.",
|
|
||||||
parent=lu
|
|
||||||
)
|
|
||||||
LearningUnitQuestionFactory(
|
|
||||||
title="Zweite passende Frage zu 'Absicherung der Familie'",
|
|
||||||
parent=lu
|
|
||||||
)
|
|
||||||
LearningContentFactory(
|
LearningContentFactory(
|
||||||
title='Ermittlung des Kundenbedarfs',
|
title='Ermittlung des Kundenbedarfs',
|
||||||
parent=circle,
|
parent=circle,
|
||||||
|
|
@ -74,10 +66,6 @@ def create_circle_children(circle, title):
|
||||||
)
|
)
|
||||||
|
|
||||||
lu = LearningUnitFactory(title='Reisen', parent=circle)
|
lu = LearningUnitFactory(title='Reisen', parent=circle)
|
||||||
LearningUnitQuestionFactory(
|
|
||||||
title='Passende Frage zu "Reisen"',
|
|
||||||
parent=lu
|
|
||||||
)
|
|
||||||
LearningContentFactory(
|
LearningContentFactory(
|
||||||
title='Reiseversicherung',
|
title='Reiseversicherung',
|
||||||
parent=circle,
|
parent=circle,
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
import wagtail_factories
|
import wagtail_factories
|
||||||
|
|
||||||
from vbv_lernwelt.learnpath.models import LearningPath, Topic, Circle, LearningSequence, LearningContent, LearningUnit, \
|
from vbv_lernwelt.learnpath.models import LearningPath, Topic, Circle, LearningSequence, LearningContent, LearningUnit
|
||||||
LearningUnitQuestion
|
|
||||||
from vbv_lernwelt.learnpath.models_learning_unit_content import VideoBlock, OnlineTrainingBlock, \
|
from vbv_lernwelt.learnpath.models_learning_unit_content import VideoBlock, OnlineTrainingBlock, \
|
||||||
ExerciseBlock, DocumentBlock, ResourceBlock, TestBlock, BookBlock, MediaLibraryBlock, AssignmentBlock
|
ExerciseBlock, DocumentBlock, ResourceBlock, TestBlock, BookBlock, MediaLibraryBlock, AssignmentBlock
|
||||||
|
|
||||||
|
|
@ -42,12 +41,6 @@ class LearningUnitFactory(wagtail_factories.PageFactory):
|
||||||
model = LearningUnit
|
model = LearningUnit
|
||||||
|
|
||||||
|
|
||||||
class LearningUnitQuestionFactory(wagtail_factories.PageFactory):
|
|
||||||
title = 'Frage zu Lerneinheit'
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = LearningUnitQuestion
|
|
||||||
|
|
||||||
class LearningContentFactory(wagtail_factories.PageFactory):
|
class LearningContentFactory(wagtail_factories.PageFactory):
|
||||||
title = 'Lerninhalt'
|
title = 'Lerninhalt'
|
||||||
|
|
||||||
|
|
@ -62,30 +55,35 @@ class VideoBlockFactory(wagtail_factories.StructBlockFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = VideoBlock
|
model = VideoBlock
|
||||||
|
|
||||||
|
|
||||||
class AssignmentBlockFactory(wagtail_factories.StructBlockFactory):
|
class AssignmentBlockFactory(wagtail_factories.StructBlockFactory):
|
||||||
description = "Beispiel Auftrag"
|
description = "Beispiel Auftrag"
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = AssignmentBlock
|
model = AssignmentBlock
|
||||||
|
|
||||||
|
|
||||||
class BookBlockFactory(wagtail_factories.StructBlockFactory):
|
class BookBlockFactory(wagtail_factories.StructBlockFactory):
|
||||||
description = "Beispiel Buch"
|
description = "Beispiel Buch"
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = BookBlock
|
model = BookBlock
|
||||||
|
|
||||||
|
|
||||||
class DocumentBlockFactory(wagtail_factories.StructBlockFactory):
|
class DocumentBlockFactory(wagtail_factories.StructBlockFactory):
|
||||||
description = "Beispiel Dokument"
|
description = "Beispiel Dokument"
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = DocumentBlock
|
model = DocumentBlock
|
||||||
|
|
||||||
|
|
||||||
class ExerciseBlockFactory(wagtail_factories.StructBlockFactory):
|
class ExerciseBlockFactory(wagtail_factories.StructBlockFactory):
|
||||||
description = "Beispiel Übung"
|
description = "Beispiel Übung"
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ExerciseBlock
|
model = ExerciseBlock
|
||||||
|
|
||||||
|
|
||||||
class OnlineTrainingBlockFactory(wagtail_factories.StructBlockFactory):
|
class OnlineTrainingBlockFactory(wagtail_factories.StructBlockFactory):
|
||||||
url = "/static/media/web_based_trainings/rise_cmi5_test_export/scormcontent/index.html"
|
url = "/static/media/web_based_trainings/rise_cmi5_test_export/scormcontent/index.html"
|
||||||
description = "Beispiel Rise Modul"
|
description = "Beispiel Rise Modul"
|
||||||
|
|
@ -93,20 +91,23 @@ class OnlineTrainingBlockFactory(wagtail_factories.StructBlockFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = OnlineTrainingBlock
|
model = OnlineTrainingBlock
|
||||||
|
|
||||||
|
|
||||||
class TestBlockFactory(wagtail_factories.StructBlockFactory):
|
class TestBlockFactory(wagtail_factories.StructBlockFactory):
|
||||||
description = "Beispiel Test"
|
description = "Beispiel Test"
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = TestBlock
|
model = TestBlock
|
||||||
|
|
||||||
|
|
||||||
class ResourceBlockFactory(wagtail_factories.StructBlockFactory):
|
class ResourceBlockFactory(wagtail_factories.StructBlockFactory):
|
||||||
description = "Beispiel Hilfsmittel"
|
description = "Beispiel Hilfsmittel"
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ResourceBlock
|
model = ResourceBlock
|
||||||
|
|
||||||
|
|
||||||
class MediaLibraryBlockFactory(wagtail_factories.StructBlockFactory):
|
class MediaLibraryBlockFactory(wagtail_factories.StructBlockFactory):
|
||||||
description = "Beispiel Mediathekeninhalt"
|
description = "Beispiel Mediathekeninhalt"
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = MediaLibraryBlock
|
model = MediaLibraryBlock
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 3.2.13 on 2022-09-27 14:26
|
# Generated by Django 3.2.13 on 2022-09-27 15:23
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
@ -17,10 +17,10 @@ class Migration(migrations.Migration):
|
||||||
initial = True
|
initial = True
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
('taggit', '0004_alter_taggeditem_content_type_alter_taggeditem_tag'),
|
||||||
|
('wagtailcore', '0069_log_entry_jsonfield'),
|
||||||
('course', '0001_initial'),
|
('course', '0001_initial'),
|
||||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
('wagtailcore', '0069_log_entry_jsonfield'),
|
|
||||||
('taggit', '0004_alter_taggeditem_content_type_alter_taggeditem_tag'),
|
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue