created new templates first version of models

This commit is contained in:
Lorenz Padberg 2022-05-03 16:28:53 +02:00
parent 19eafd8b35
commit fe3d5443a8
7 changed files with 94 additions and 49 deletions

View File

@ -0,0 +1,19 @@
# Generated by Django 3.2.12 on 2022-05-03 11:03
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('learnpath', '0002_auto_20220427_1058'),
]
operations = [
migrations.AddField(
model_name='learningunit',
name='learning_sequence',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='circles', to='learnpath.learningsequence'),
),
]

View File

@ -0,0 +1,19 @@
# Generated by Django 3.2.12 on 2022-05-03 11:22
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('learnpath', '0003_learningunit_learning_sequence'),
]
operations = [
migrations.AlterField(
model_name='learningunit',
name='learning_sequence',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='learning_units', to='learnpath.learningsequence'),
),
]

View File

@ -132,6 +132,13 @@ class LearningSequence(Orderable):
class LearningUnit(Page, Orderable): class LearningUnit(Page, Orderable):
# TODO: Review model architecture, is the stream fiel the right thing here? # TODO: Review model architecture, is the stream fiel the right thing here?
parent_page_types = ['learnpath.Circle'] parent_page_types = ['learnpath.Circle']
learning_sequence = models.ForeignKey(
'learnpath.LearningSequence',
null=True,
blank=True,
on_delete=models.CASCADE,
related_name='learning_units'
)
content_blocks = [ content_blocks = [
('web_based_training', WebBasedTrainingBlock()), ('web_based_training', WebBasedTrainingBlock()),
@ -143,7 +150,8 @@ class LearningUnit(Page, Orderable):
content_panels = [ content_panels = [
FieldPanel('title', classname="full title"), FieldPanel('title', classname="full title"),
StreamFieldPanel('contents') StreamFieldPanel('contents'),
FieldPanel('learning_sequence')
] ]
subpage_types = [] subpage_types = []
@ -159,7 +167,6 @@ class LearningUnit(Page, Orderable):
return f"{self.title}" return f"{self.title}"
def find_available_slug(model, requested_slug, ignore_page_id=None): def find_available_slug(model, requested_slug, ignore_page_id=None):
""" """
Finds an available slug within the specified parent. Finds an available slug within the specified parent.

View File

@ -12,24 +12,23 @@ def create_default_learning_path():
if not site: if not site:
site = wagtail_factories.SiteFactory(is_default_site=True) site = wagtail_factories.SiteFactory(is_default_site=True)
lp = LearningPathFactory.create(title="Versicherungsvermittler/in", parent=site.root_page) lp = LearningPathFactory(title="Versicherungsvermittler/in", parent=site.root_page)
tp = TopicFactory.create(title="Basis", is_visible=False, learning_path=lp) tp = TopicFactory(title="Basis", is_visible=False, learning_path=lp)
tp.save()
circle_1 = CircleFactory.create(title="Basis", parent=lp, topic=tp, description="""In diesem Circle erklären wir dir, wie der Lehrgang circle_1 = CircleFactory(title="Basis", parent=lp, topic=tp, description="""In diesem Circle erklären wir dir, wie der Lehrgang
Versicherungsvermittler / in " aufgebaut ist. Zudem vermitteln wir dir die wichtigsten Grundlagen, Versicherungsvermittler / in " aufgebaut ist. Zudem vermitteln wir dir die wichtigsten Grundlagen,
damit erfolgreich mit deinem Lernpfad starten kannst.""") damit erfolgreich mit deinem Lernpfad starten kannst.""")
ls_1 = LearningSequenceFactory.create(title='Einleitung', circle=circle_1) ls_1 = LearningSequenceFactory(title='Einleitung', circle=circle_1)
lu_1 = LearningUnitFactory.create(title="Herzlich Willkommmen", parent=circle_1) lu_1 = LearningUnitFactory(title="Herzlich Willkommmen", parent=circle_1, learning_sequence=ls_1)
ls_2 = LearningSequenceFactory.create(title='Grundlagen', circle=circle_1) ls_2 = LearningSequenceFactory(title='Grundlagen', circle=circle_1)
lu_1 = LearningUnitFactory.create(title="Aber jetzt, Butter bei die Fische", parent=circle_1) lu_1 = LearningUnitFactory(title="Aber jetzt, Butter bei die Fische", parent=circle_1, learning_sequence=ls_2)
tp = TopicFactory.create(title="Gewinnen von Kunden", learning_path=lp) tp = TopicFactory(title="Gewinnen von Kunden", learning_path=lp)
tp.save()
circle_2 = CircleFactory.create(title="Gewinnen", parent=lp, description="""Versicherungsvermittlerinnen und -vermittler verfügen über circle_2 = CircleFactory(title="Gewinnen", parent=lp, description="""Versicherungsvermittlerinnen und -vermittler verfügen über
ein starkes Netzwerk, das sie gezielt pflegen und ausbauen. Sie beraten und betreuen ihre bestehenden Kundinnen und Kunden professionell und gewinnen so ihr Vertrauen. Dadurch schaffen sie die Basis für das Gewinnen ein starkes Netzwerk, das sie gezielt pflegen und ausbauen. Sie beraten und betreuen ihre bestehenden Kundinnen und Kunden professionell und gewinnen so ihr Vertrauen. Dadurch schaffen sie die Basis für das Gewinnen
von neuen Kundinnen und Kunden. Versicherungsvermittlerinnen und -vermittler sprechen ihre bestehenden Kundinnen von neuen Kundinnen und Kunden. Versicherungsvermittlerinnen und -vermittler sprechen ihre bestehenden Kundinnen
und Kunden auf Weiterempfehlung an. So nutzen sie ihre und Kunden auf Weiterempfehlung an. So nutzen sie ihre
@ -46,9 +45,9 @@ von Neukunden zu benützen
Das Thema Risiko und Sicherheit in einem Gespräch gezielt und auf die Situation des jeweiligen Gesprächspartners bezogen einfliessen zu lassen Das Thema Risiko und Sicherheit in einem Gespräch gezielt und auf die Situation des jeweiligen Gesprächspartners bezogen einfliessen zu lassen
Im täglichen Kontakt potenzielle Kundinnen und Kunden zu erkennen""") Im täglichen Kontakt potenzielle Kundinnen und Kunden zu erkennen""")
tp = TopicFactory.create(title="Beraten der Kunden", learning_path=lp).save() tp = TopicFactory(title="Beraten der Kunden", learning_path=lp)
circle_3 = CircleFactory.create(title="Einstieg", parent=lp, topic=tp) circle_3 = CircleFactory(title="Einstieg", parent=lp, topic=tp)
circle_4 = CircleFactory.create(title="Analyse", parent=lp, topic=tp, circle_4 = CircleFactory(title="Analyse", parent=lp, topic=tp,
description="""Nach dem Gespräch werten sie die Analyse aus und erstellen mit den description="""Nach dem Gespräch werten sie die Analyse aus und erstellen mit den
zur Verfügung stehenden Systemen formal korrekte Lösungsvorschläge bzw. zur Verfügung stehenden Systemen formal korrekte Lösungsvorschläge bzw.
Ausschreibungen. Je nach Komplexität der Situation ziehen sie die nötigen Ausschreibungen. Je nach Komplexität der Situation ziehen sie die nötigen
@ -61,10 +60,11 @@ von Neukunden zu benützen
Lösungsvorschläge zu skizzieren und Lösungsvorschläge zu skizzieren und
zu visualisieren""") zu visualisieren""")
sequence_1 = LearningSequenceFactory.create(title="Starten", circle=circle_4).save() sequence_1 = LearningSequenceFactory(title="Starten", circle=circle_4)
learning_unit = LearningUnitFactory.create(title='Einleitung Circle "Anlayse"', parent=circle_4) learning_unit = LearningUnitFactory(title='Einleitung Circle "Anlayse"', parent=circle_4, learning_sequence=sequence_1)
learning_unit.learning_sequence = sequence_1
learning_unit = LearningUnitFactory.create(title='** Einstieg Video"', parent=circle_4) learning_unit = LearningUnitFactory.create(title='** Einstieg Video"', parent=circle_4, learning_sequence=sequence_1)
video_url = "https://www.vbv.ch/fileadmin/vbv/Videos/Statements_Externe/Janos_M/Testimonial_Janos_Mischler_PositiveEffekte.mp4" video_url = "https://www.vbv.ch/fileadmin/vbv/Videos/Statements_Externe/Janos_M/Testimonial_Janos_Mischler_PositiveEffekte.mp4"
video_title = "Ausbildung ist pflicht" video_title = "Ausbildung ist pflicht"
video_description = "Erfahren Sie, was für Janos Mischler die positiven Aspekte von ständiger Weiterbildung sind aus fachlicher und aus persönlicher Sicht." video_description = "Erfahren Sie, was für Janos Mischler die positiven Aspekte von ständiger Weiterbildung sind aus fachlicher und aus persönlicher Sicht."
@ -72,39 +72,39 @@ von Neukunden zu benützen
learning_unit.contents.append(('video', video_block)) learning_unit.contents.append(('video', video_block))
learning_unit.save() learning_unit.save()
learning_unit = LearningUnitFactory.create(title='** Web Based Training"', parent=circle_4) learning_unit = LearningUnitFactory.create(title='** Web Based Training"', parent=circle_4, learning_sequence=sequence_1)
wbt_url = "web_based_trainings/rise_cmi5_test_export/scormcontent/index.html" wbt_url = "web_based_trainings/rise_cmi5_test_export/scormcontent/index.html"
wbt_block = WebBasedTrainingBlockFactory(type="web_based_training", url=wbt_url) wbt_block = WebBasedTrainingBlockFactory(type="web_based_training", url=wbt_url)
learning_unit.contents.append(('web_based_training', wbt_block)) learning_unit.contents.append(('web_based_training', wbt_block))
learning_unit.save() learning_unit.save()
learning_unit = LearningUnitFactory.create(title="Selbsteinschätzung", parent=circle_4) learning_unit = LearningUnitFactory.create(title="Selbsteinschätzung", parent=circle_4, learning_sequence=sequence_1)
sequence_2 = LearningSequenceFactory.create(title="Beobachten", circle=circle_4).save() sequence_2 = LearningSequenceFactory.create(title="Beobachten", circle=circle_4)
learning_unit = LearningUnitFactory.create(title="Mein Motorfahrzeug kaufen", parent=circle_4) learning_unit = LearningUnitFactory.create(title="Mein Motorfahrzeug kaufen", parent=circle_4, learning_sequence=sequence_2)
learning_unit = LearningUnitFactory.create(title="Sich selbständig machen", parent=circle_4) learning_unit = LearningUnitFactory.create(title="Sich selbständig machen", parent=circle_4, learning_sequence=sequence_2)
sequence_3 = LearningSequenceFactory.create(title="Anwenden", circle=circle_4).save() sequence_3 = LearningSequenceFactory.create(title="Anwenden", circle=circle_4)
learning_unit = LearningUnitFactory.create(title="Nora kauft sich ein neues Auto", parent=circle_4) learning_unit = LearningUnitFactory.create(title="Nora kauft sich ein neues Auto", parent=circle_4, learning_sequence=sequence_3)
learning_unit = LearningUnitFactory.create(title="Manuel träumt von einem neuen Tesla", parent=circle_4) learning_unit = LearningUnitFactory.create(title="Manuel träumt von einem neuen Tesla", parent=circle_4, learning_sequence=sequence_3)
learning_unit = LearningUnitFactory.create(title="Deine Erkenntnisse und Learnings", parent=circle_4) learning_unit = LearningUnitFactory.create(title="Deine Erkenntnisse und Learnings", parent=circle_4, learning_sequence=sequence_3)
sequence_4 = LearningSequenceFactory.create(title="Üben", circle=circle_4).save() sequence_4 = LearningSequenceFactory.create(title="Üben", circle=circle_4)
learning_unit = LearningUnitFactory.create(title="Ermittlung des Kundenbedarfs", parent=circle_4) learning_unit = LearningUnitFactory.create(title="Ermittlung des Kundenbedarfs", parent=circle_4, learning_sequence=sequence_4)
learning_unit = LearningUnitFactory.create(title="Aktives Zuhören", parent=circle_4) learning_unit = LearningUnitFactory.create(title="Aktives Zuhören", parent=circle_4, learning_sequence=sequence_4)
learning_unit = LearningUnitFactory.create(title="In Bildern Sprechen", parent=circle_4) learning_unit = LearningUnitFactory.create(title="In Bildern Sprechen", parent=circle_4, learning_sequence=sequence_4)
learning_unit = LearningUnitFactory.create(title="Priorisieren des Bedarfs", parent=circle_4) learning_unit = LearningUnitFactory.create(title="Priorisieren des Bedarfs", parent=circle_4, learning_sequence=sequence_4)
learning_unit = LearningUnitFactory.create(title="Zusammenfassung des Bedarfs", parent=circle_4) learning_unit = LearningUnitFactory.create(title="Zusammenfassung des Bedarfs", parent=circle_4, learning_sequence=sequence_4)
sequence_5 = LearningSequenceFactory.create(title="Testen", circle=circle_4).save() sequence_5 = LearningSequenceFactory.create(title="Testen", circle=circle_4)
learning_unit = LearningUnitFactory.create(title="Bedarfsfragen", parent=circle_4) learning_unit = LearningUnitFactory.create(title="Bedarfsfragen", parent=circle_4, learning_sequence=sequence_5)
learning_unit = LearningUnitFactory.create(title="Andwendung der Fragetechniken", parent=circle_4) learning_unit = LearningUnitFactory.create(title="Andwendung der Fragetechniken", parent=circle_4, learning_sequence=sequence_5)
sequence_5 = LearningSequenceFactory.create(title="Vernetzen", circle=circle_4).save() sequence_5 = LearningSequenceFactory.create(title="Vernetzen", circle=circle_4)
learning_unit = LearningUnitFactory.create(title="Online Training", parent=circle_4) learning_unit = LearningUnitFactory.create(title="Online Training", parent=circle_4, learning_sequence=sequence_5)
sequence_6 = LearningSequenceFactory.create(title="Beenden", circle=circle_4).save() sequence_6 = LearningSequenceFactory.create(title="Beenden", circle=circle_4)
learning_unit = LearningUnitFactory.create(title="Selbsteinschätzung", parent=circle_4) learning_unit = LearningUnitFactory.create(title="Selbsteinschätzung", parent=circle_4, learning_sequence=sequence_6)
circle_5 = CircleFactory.create(title="Lösung", circle_5 = CircleFactory.create(title="Lösung",
parent=lp, parent=lp,
@ -122,10 +122,10 @@ von Neukunden zu benützen
goals="""— Je nach Komplexität der Lösungsvorschläge (z.B. Offerten oder Offertvergleich) einen Fachspezialisten aufzubieten goals="""— Je nach Komplexität der Lösungsvorschläge (z.B. Offerten oder Offertvergleich) einen Fachspezialisten aufzubieten
Sich kundenorientiert auf das Gespräch vorzubereiten und sich passend zu präsentieren""") Sich kundenorientiert auf das Gespräch vorzubereiten und sich passend zu präsentieren""")
tp = TopicFactory.create(title="Betreuen und Ausbauen des Kundenstamms", learning_path=lp).save() tp = TopicFactory.create(title="Betreuen und Ausbauen des Kundenstamms", learning_path=lp)
circle_7 = CircleFactory.create(title="Betreuen", parent=lp, topic=tp) circle_7 = CircleFactory.create(title="Betreuen", parent=lp, topic=tp)
tp = TopicFactory.create(title="Prüfung", is_visible=False, learning_path=lp).save() tp = TopicFactory.create(title="Prüfung", is_visible=False, learning_path=lp)
circle_7 = CircleFactory.create(title="Prüfungsvorbereitung", parent=lp, topic=tp) circle_7 = CircleFactory.create(title="Prüfungsvorbereitung", parent=lp, topic=tp)

View File

@ -11,7 +11,7 @@ class LearningPathFactory(wagtail_factories.PageFactory):
model = LearningPath model = LearningPath
class TopicFactory(factory.Factory): class TopicFactory(factory.django.DjangoModelFactory):
title = "Gewinnen von Kunden" title = "Gewinnen von Kunden"
is_visible = True is_visible = True
@ -26,7 +26,7 @@ class CircleFactory(wagtail_factories.PageFactory):
model = Circle model = Circle
class LearningSequenceFactory(factory.Factory): class LearningSequenceFactory(factory.django.DjangoModelFactory):
title = "Grundlagen" title = "Grundlagen"
class Meta: class Meta:

View File

@ -31,10 +31,10 @@
</div> </div>
<div class="bg-gray-50 flex-col w-2/3"> <div class="bg-gray-50 flex-col w-2/3">
{% for learning_sequence in page.get_children %} {% for learning_sequence in page.learning_sequences.all %}
<div class="p-6 max-w-sm mx-auto bg-white shadow-lg m-4"> <div class="p-6 max-w-sm mx-auto bg-white shadow-lg m-4">
<h2 class="font-bold">{{ learning_sequence.title }}</h2> <h2 class="font-bold">{{ learning_sequence.title }}</h2>
{% for learning_unit in learning_sequence.get_children %} {% for learning_unit in learning_sequence.learning_units.all %}
<div> <div>
<a target="_blank" href="{% pageurl learning_unit %}">{{ learning_unit.title }}</a> <a target="_blank" href="{% pageurl learning_unit %}">{{ learning_unit.title }}</a>
</div> </div>

View File

@ -10,11 +10,11 @@
<div class="intro">{{ page.intro|richtext }}</div> <div class="intro">{{ page.intro|richtext }}</div>
<div class="flex flex-row w-full h-max-80 bg-gray-50 m-4 divide-x-4"> <div class="flex flex-row w-full h-max-80 bg-gray-50 m-4 divide-x-4">
{% for topic in page.get_children %} {% for topic in page.topics.all %}
<div class="bg-gray-50-600 m-4"> <div class="bg-gray-50-600 m-4">
<h2 class="font-bold">{{ topic.title }}</h2> <h2 class="font-bold">{{ topic.title }}</h2>
<div class="flex flex-row"> <div class="flex flex-row">
{% for circle in topic.get_children %} {% for circle in topic.circles.all %}
<div class="h-36 w-36 bg-gray-400 m-5"> <div class="h-36 w-36 bg-gray-400 m-5">
<h2><a href="{% pageurl circle %}">{{ circle.title }}</a></h2> <h2><a href="{% pageurl circle %}">{{ circle.title }}</a></h2>
</div> </div>