Add CompetencePage
This commit is contained in:
parent
9be2fa0d3a
commit
d5e484a6c7
|
|
@ -1,4 +1,6 @@
|
|||
from vbv_lernwelt.competence.factories import CompetenceProfilePageFactory, PerformanceCriteriaFactory
|
||||
from vbv_lernwelt.competence.factories import CompetenceProfilePageFactory, PerformanceCriteriaFactory, \
|
||||
CompetencePageFactory
|
||||
from vbv_lernwelt.competence.models import CompetencePage
|
||||
from vbv_lernwelt.course.consts import COURSE_VERSICHERUNGSVERMITTLERIN
|
||||
from vbv_lernwelt.course.models import CoursePage, Course
|
||||
from vbv_lernwelt.learnpath.models import LearningUnit
|
||||
|
|
@ -13,20 +15,128 @@ def create_default_competence_profile():
|
|||
parent=course_page,
|
||||
)
|
||||
|
||||
competences = [{
|
||||
'competence_id': 'A1',
|
||||
'title': 'Weiterempfehlung für Neukunden generieren',
|
||||
'items': [
|
||||
'Verhandlungsgeschick',
|
||||
'Überzeugtes Auftreten',
|
||||
],
|
||||
}, {
|
||||
'competence_id': 'A2',
|
||||
'title': 'Kundengespräche vereinbaren',
|
||||
'items': [
|
||||
'Gesprächsführung / Fragetechniken',
|
||||
'Selbstorganisation',
|
||||
'Arbeitstechniken',
|
||||
'Psychologische Kenntnisse / Kommunikations-psychologie',
|
||||
],
|
||||
}, {
|
||||
'competence_id': 'A3',
|
||||
'title': 'Auftritt in den sozialen Medien zeitgemäss halten',
|
||||
'items': [
|
||||
'Gesetzliche und Compliance-Anforderungen der Versicherer',
|
||||
'Datenschutzgesetz',
|
||||
'Kommunikation in den sozialen Medien',
|
||||
]
|
||||
}, {
|
||||
'competence_id': 'A4',
|
||||
'title': 'Kundendaten erfassen',
|
||||
'items': []
|
||||
}, {
|
||||
'competence_id': 'B1',
|
||||
'title': 'Wünsche, Ziele und Bedürfnisse der Kunden im Gespräch ermitteln',
|
||||
'items': [
|
||||
'Gesprächsführung',
|
||||
'Fragetechniken',
|
||||
'Kundenpsychologie',
|
||||
]
|
||||
}, {
|
||||
'competence_id': 'B2',
|
||||
'title': 'Analyse des Kundenbedarfs und des Kundenbedürfnisses durchführen',
|
||||
'items': [
|
||||
'Fragetechniken',
|
||||
'Visuelle Hilfsmittel / Visualisierungstechniken',
|
||||
]
|
||||
}, {
|
||||
'competence_id': 'B3',
|
||||
'title': 'Individuelle Lösungsvorschläge erarbeiten',
|
||||
'items': [
|
||||
'Fundierte Produktekenntnisse',
|
||||
'Regulatorische Vorschriften',
|
||||
]
|
||||
}, {
|
||||
'competence_id': 'B4',
|
||||
'title': 'Lösungsvorschläge präsentieren und umsetzen',
|
||||
'items': [
|
||||
'Verhandlungsstrategien',
|
||||
'Fundierte Produktkenntnisse',
|
||||
'Visuelle Hilfsmittel / Visualisierungstechniken',
|
||||
]
|
||||
}, {
|
||||
'competence_id': 'C1',
|
||||
'title': 'Cross- und Upselling; bestehende fremdverwaltete Versicherungspolicen prüfen und in das Portfolio aufnehmen',
|
||||
'items': [
|
||||
'Produktkenntnisse',
|
||||
'Gesprächsführung',
|
||||
'Kommunikation',
|
||||
'Fragetechnik',
|
||||
'Verhandlungsgeschick',
|
||||
'Vertragsrecht',
|
||||
'Regulatorische Vorgaben',
|
||||
'UVG, BVG, KVG, VVG',
|
||||
]
|
||||
}, {
|
||||
'competence_id': 'C2',
|
||||
'title': 'Änderungswünsche entgegennehmen und bestehende Verträge anpassen',
|
||||
'items': [
|
||||
'Produktkenntnisse',
|
||||
'Gesprächsführung',
|
||||
'Kommunikation',
|
||||
'Fragetechnik',
|
||||
'Verhandlungsgeschick',
|
||||
'Vertragsrecht',
|
||||
'Regulatorische Vorgaben',
|
||||
'UVG, BVG, KVG, VVG',
|
||||
]
|
||||
}, {
|
||||
'competence_id': 'C3',
|
||||
'title': 'Kunden im Schadenfall unterstützen',
|
||||
'items': []
|
||||
}, {
|
||||
'competence_id': 'C4',
|
||||
'title': 'Bestehende Kunden pflegen',
|
||||
'items': []
|
||||
}, {
|
||||
'competence_id': 'C5',
|
||||
'title': 'Versicherungsanträge nachbearbeiten',
|
||||
'items': []
|
||||
}]
|
||||
|
||||
for c in competences:
|
||||
CompetencePageFactory(
|
||||
parent=competence_profile_page,
|
||||
competence_id=c['competence_id'],
|
||||
title=c['title'],
|
||||
items=[
|
||||
('item', i) for i in c['items']
|
||||
]
|
||||
)
|
||||
|
||||
PerformanceCriteriaFactory(
|
||||
parent=competence_profile_page,
|
||||
parent=CompetencePage.objects.get(competence_id='B1'),
|
||||
competence_id='B1.3',
|
||||
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'),
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=competence_profile_page,
|
||||
parent=CompetencePage.objects.get(competence_id='B2'),
|
||||
competence_id='B2.1',
|
||||
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'),
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=competence_profile_page,
|
||||
parent=CompetencePage.objects.get(competence_id='B2'),
|
||||
competence_id='B2.2',
|
||||
title='Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, die Risiken aufzuzeigen.',
|
||||
learning_unit=LearningUnit.objects.get(slug='versicherungsvermittlerin-lp-circle-analyse-lu-fahrzeug'),
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import wagtail_factories
|
||||
|
||||
from vbv_lernwelt.competence.models import CompetenceProfilePage, PerformanceCriteria
|
||||
from vbv_lernwelt.competence.models import CompetenceProfilePage, PerformanceCriteria, CompetencePage
|
||||
|
||||
|
||||
class CompetenceProfilePageFactory(wagtail_factories.PageFactory):
|
||||
|
|
@ -10,8 +10,16 @@ class CompetenceProfilePageFactory(wagtail_factories.PageFactory):
|
|||
model = CompetenceProfilePage
|
||||
|
||||
|
||||
class CompetencePageFactory(wagtail_factories.PageFactory):
|
||||
competence_id = 'A1'
|
||||
title = 'Weiterempfehlung für Neukunden generieren'
|
||||
|
||||
class Meta:
|
||||
model = CompetencePage
|
||||
|
||||
|
||||
class PerformanceCriteriaFactory(wagtail_factories.PageFactory):
|
||||
competence_id = 'A.1'
|
||||
competence_id = 'A1.1'
|
||||
title = 'Bestehende Kunden so zu beraten, dass sie von diesen weiterempfohlen werden'
|
||||
|
||||
class Meta:
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
# Generated by Django 3.2.13 on 2022-09-28 10:30
|
||||
# Generated by Django 3.2.13 on 2022-09-28 10:46
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import wagtail.blocks
|
||||
import wagtail.fields
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
|
@ -10,9 +12,22 @@ class Migration(migrations.Migration):
|
|||
|
||||
dependencies = [
|
||||
('wagtailcore', '0069_log_entry_jsonfield'),
|
||||
('learnpath', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='CompetencePage',
|
||||
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')),
|
||||
('competence_id', models.TextField(default='A1')),
|
||||
('items', wagtail.fields.StreamField([('item', wagtail.blocks.TextBlock())], use_json_field=True)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
bases=('wagtailcore.page',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='CompetenceProfilePage',
|
||||
fields=[
|
||||
|
|
@ -27,7 +42,8 @@ class Migration(migrations.Migration):
|
|||
name='PerformanceCriteria',
|
||||
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')),
|
||||
('competence_id', models.TextField(default='')),
|
||||
('competence_id', models.TextField(default='A1.1')),
|
||||
('learning_unit', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='learnpath.learningunit')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
|
|
|
|||
|
|
@ -1,22 +0,0 @@
|
|||
# Generated by Django 3.2.13 on 2022-09-28 10:30
|
||||
|
||||
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'),
|
||||
),
|
||||
]
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
from django.db import models
|
||||
from django.utils.text import slugify
|
||||
from wagtail import blocks
|
||||
from wagtail.admin.panels import FieldPanel
|
||||
from wagtail.fields import StreamField
|
||||
from wagtail.models import Page
|
||||
|
||||
from vbv_lernwelt.core.model_utils import find_available_slug
|
||||
|
|
@ -9,7 +11,7 @@ from vbv_lernwelt.learnpath.serializer_helpers import get_it_serializer_class
|
|||
|
||||
class CompetenceProfilePage(Page):
|
||||
parent_page_types = ['course.CoursePage']
|
||||
subpage_types = ['competence.PerformanceCriteria']
|
||||
subpage_types = ['competence.CompetencePage']
|
||||
|
||||
content_panels = [
|
||||
FieldPanel('title', classname="full title"),
|
||||
|
|
@ -30,9 +32,36 @@ class CompetenceProfilePage(Page):
|
|||
)
|
||||
|
||||
|
||||
class CompetencePage(Page):
|
||||
parent_page_types = ['competence.CompetenceProfilePage']
|
||||
subpage_types = ['competence.PerformanceCriteria']
|
||||
competence_id = models.TextField(default='A1')
|
||||
items = StreamField([
|
||||
('item', blocks.TextBlock()),
|
||||
], use_json_field=True)
|
||||
|
||||
content_panels = [
|
||||
FieldPanel('title'),
|
||||
FieldPanel('competence_id'),
|
||||
]
|
||||
|
||||
def full_clean(self, *args, **kwargs):
|
||||
self.slug = find_available_slug(slugify(f"{self.get_parent().slug}-competence-{self.competence_id}", allow_unicode=True))
|
||||
super(CompetencePage, self).full_clean(*args, **kwargs)
|
||||
|
||||
@classmethod
|
||||
def get_serializer_class(cls):
|
||||
return get_it_serializer_class(
|
||||
cls, [
|
||||
'id', 'title', 'slug', 'type', 'translation_key',
|
||||
'children',
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
class PerformanceCriteria(Page):
|
||||
parent_page_types = ['competence.CompetenceProfilePage']
|
||||
competence_id = models.TextField(default='')
|
||||
competence_id = models.TextField(default='A1.1')
|
||||
learning_unit = models.ForeignKey(
|
||||
'learnpath.LearningUnit',
|
||||
null=True,
|
||||
|
|
|
|||
Loading…
Reference in New Issue