Refactor data model
This commit is contained in:
parent
a2044470ca
commit
4a2d049969
|
|
@ -13,6 +13,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^0.26.1",
|
"axios": "^0.26.1",
|
||||||
|
"loglevel": "^1.8.0",
|
||||||
"pinia": "^2.0.13",
|
"pinia": "^2.0.13",
|
||||||
"vue": "^3.2.31",
|
"vue": "^3.2.31",
|
||||||
"vue-i18n": "^9.1.9",
|
"vue-i18n": "^9.1.9",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
<script>
|
<script>
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
|
import * as log from 'loglevel';
|
||||||
|
|
||||||
import MainNavigationBar from '../components/MainNavigationBar.vue';
|
import MainNavigationBar from '../components/MainNavigationBar.vue';
|
||||||
import LearningSequence from '../components/circle/LearningSequence.vue';
|
import LearningSequence from '../components/circle/LearningSequence.vue';
|
||||||
|
|
||||||
|
|
@ -13,11 +15,12 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
console.log('CircleAnalyseExampleView mounted', this.circleSlug);
|
log.debug('CircleAnalyseExampleView mounted', this.circleSlug);
|
||||||
axios({
|
axios({
|
||||||
method: 'get',
|
method: 'get',
|
||||||
url: `/wagtailapi/v2/pages/?type=learnpath.Circle&slug=${this.circleSlug}&fields=title,description,learning_sequences(title,learning_packages(title,my_title,learning_units(title)))`,
|
url: `/wagtailapi/v2/pages/?type=learnpath.Circle&slug=${this.circleSlug}&fields=title,description,learning_sequences(title,learning_packages(title,my_title,learning_units(title)))`,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
|
log.debug(response.data.items[0]);
|
||||||
this.circleData = response.data.items[0];
|
this.circleData = response.data.items[0];
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 3.2.12 on 2022-05-30 13:51
|
# Generated by Django 3.2.12 on 2022-06-01 13:32
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
|
@ -51,18 +51,6 @@ class Migration(migrations.Migration):
|
||||||
},
|
},
|
||||||
bases=('wagtailcore.page',),
|
bases=('wagtailcore.page',),
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
|
||||||
name='LearningPackage',
|
|
||||||
fields=[
|
|
||||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
||||||
('sort_order', models.IntegerField(blank=True, editable=False, null=True)),
|
|
||||||
('title', models.CharField(default='', max_length=256)),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
'ordering': ['sort_order'],
|
|
||||||
'abstract': False,
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='LearningPath',
|
name='LearningPath',
|
||||||
fields=[
|
fields=[
|
||||||
|
|
@ -73,6 +61,18 @@ class Migration(migrations.Migration):
|
||||||
},
|
},
|
||||||
bases=('wagtailcore.page',),
|
bases=('wagtailcore.page',),
|
||||||
),
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='LearningSequence',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('sort_order', models.IntegerField(blank=True, editable=False, null=True)),
|
||||||
|
('title', models.CharField(default='', max_length=256)),
|
||||||
|
('circle', modelcluster.fields.ParentalKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='learning_sequences', to='learnpath.circle')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Learning Sequence',
|
||||||
|
},
|
||||||
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='Topic',
|
name='Topic',
|
||||||
fields=[
|
fields=[
|
||||||
|
|
@ -92,31 +92,13 @@ class Migration(migrations.Migration):
|
||||||
('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')),
|
||||||
('sort_order', models.IntegerField(blank=True, editable=False, null=True)),
|
('sort_order', models.IntegerField(blank=True, editable=False, null=True)),
|
||||||
('contents', wagtail.core.fields.StreamField([('web_based_training', wagtail.core.blocks.StructBlock([('url', wagtail.core.blocks.URLBlock())])), ('video', wagtail.core.blocks.StructBlock([('url', wagtail.core.blocks.URLBlock())]))], blank=True, null=True)),
|
('contents', wagtail.core.fields.StreamField([('web_based_training', wagtail.core.blocks.StructBlock([('url', wagtail.core.blocks.URLBlock())])), ('video', wagtail.core.blocks.StructBlock([('url', wagtail.core.blocks.URLBlock())]))], blank=True, null=True)),
|
||||||
('learning_package', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='learning_units', to='learnpath.learningpackage')),
|
('learning_sequence', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='learning_units', to='learnpath.learningsequence')),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'verbose_name': 'Learning Unit',
|
'verbose_name': 'Learning Unit',
|
||||||
},
|
},
|
||||||
bases=('wagtailcore.page', models.Model),
|
bases=('wagtailcore.page', models.Model),
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
|
||||||
name='LearningSequence',
|
|
||||||
fields=[
|
|
||||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
||||||
('sort_order', models.IntegerField(blank=True, editable=False, null=True)),
|
|
||||||
('title', models.CharField(default='', max_length=256)),
|
|
||||||
('category', models.CharField(choices=[('INCIRCLE', 'In Circle'), ('START', 'Start'), ('END', 'End')], default='INCIRCLE', max_length=16)),
|
|
||||||
('circle', modelcluster.fields.ParentalKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='learning_sequences', to='learnpath.circle')),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
'verbose_name': 'Learning Sequence',
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='learningpackage',
|
|
||||||
name='learning_sequence',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='learning_packages', to='learnpath.learningsequence'),
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='FullfillmentCriteria',
|
name='FullfillmentCriteria',
|
||||||
fields=[
|
fields=[
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
# Generated by Django 3.2.12 on 2022-06-01 14:18
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('learnpath', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='learningunit',
|
||||||
|
name='sort_order',
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
# Generated by Django 3.2.12 on 2022-06-01 14:40
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('learnpath', '0002_remove_learningunit_sort_order'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='circle',
|
||||||
|
name='sort_order',
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -1,13 +1,12 @@
|
||||||
# Create your models here.
|
# Create your models here.
|
||||||
|
|
||||||
from collections import OrderedDict
|
|
||||||
|
|
||||||
from django.utils.text import slugify
|
from django.utils.text import slugify
|
||||||
from grapple.helpers import register_query_field
|
from grapple.helpers import register_query_field
|
||||||
from wagtail.api import APIField
|
from wagtail.api import APIField
|
||||||
from wagtail.core.blocks import StreamBlock
|
from wagtail.core.blocks import StreamBlock
|
||||||
from wagtail.core.fields import StreamField
|
from wagtail.core.fields import StreamField
|
||||||
from wagtail.core.models import Page, Orderable
|
from wagtail.core.models import Page, Orderable
|
||||||
|
from wagtail.snippets.models import register_snippet
|
||||||
|
|
||||||
from vbv_lernwelt.learnpath.models_competences import *
|
from vbv_lernwelt.learnpath.models_competences import *
|
||||||
from vbv_lernwelt.learnpath.models_learning_unit_content import WebBasedTrainingBlock, VideoBlock
|
from vbv_lernwelt.learnpath.models_learning_unit_content import WebBasedTrainingBlock, VideoBlock
|
||||||
|
|
@ -60,7 +59,6 @@ class Topic(Orderable):
|
||||||
# parent_page_types = ['learnpath.LearningPath']
|
# parent_page_types = ['learnpath.LearningPath']
|
||||||
# subpage_types = ['learnpath.Circle']
|
# subpage_types = ['learnpath.Circle']
|
||||||
|
|
||||||
|
|
||||||
def full_clean(self, *args, **kwargs):
|
def full_clean(self, *args, **kwargs):
|
||||||
self.slug = find_available_slug(Topic, slugify(self.title, allow_unicode=True))
|
self.slug = find_available_slug(Topic, slugify(self.title, allow_unicode=True))
|
||||||
super(Topic, self).full_clean(*args, **kwargs)
|
super(Topic, self).full_clean(*args, **kwargs)
|
||||||
|
|
@ -72,9 +70,10 @@ class Topic(Orderable):
|
||||||
return f"{self.title}"
|
return f"{self.title}"
|
||||||
|
|
||||||
|
|
||||||
class Circle(Page, Orderable):
|
class Circle(Page):
|
||||||
description = models.TextField(default="", blank=True)
|
description = models.TextField(default="", blank=True)
|
||||||
goals = models.TextField(default="", blank=True)
|
goals = models.TextField(default="", blank=True)
|
||||||
|
|
||||||
topic = models.ForeignKey(
|
topic = models.ForeignKey(
|
||||||
'learnpath.Topic',
|
'learnpath.Topic',
|
||||||
null=True,
|
null=True,
|
||||||
|
|
@ -83,7 +82,7 @@ class Circle(Page, Orderable):
|
||||||
related_name='circles'
|
related_name='circles'
|
||||||
)
|
)
|
||||||
|
|
||||||
parent_page_types = ['learnpath.Learningpath']
|
parent_page_types = ['learnpath.LearningPath']
|
||||||
subpage_types = ['learnpath.LearningUnit']
|
subpage_types = ['learnpath.LearningUnit']
|
||||||
|
|
||||||
content_panels = Page.content_panels + [
|
content_panels = Page.content_panels + [
|
||||||
|
|
@ -92,41 +91,13 @@ class Circle(Page, Orderable):
|
||||||
InlinePanel('learning_sequences', label="Learning Sequences"),
|
InlinePanel('learning_sequences', label="Learning Sequences"),
|
||||||
]
|
]
|
||||||
|
|
||||||
# Export fields over the API
|
|
||||||
api_fields = [
|
api_fields = [
|
||||||
APIField('title'),
|
APIField('title'),
|
||||||
APIField('description'),
|
APIField('description'),
|
||||||
APIField('topic'),
|
APIField('topic'),
|
||||||
APIField('learning_sequences'),
|
APIField('learning_sequences'),
|
||||||
# APIField('content_structure'),
|
|
||||||
]
|
]
|
||||||
|
|
||||||
@property
|
|
||||||
def content_structure(self):
|
|
||||||
# FIXME: not needed!?
|
|
||||||
# you can access nested content with the following url scheme (look a the nested parentheses!):
|
|
||||||
# /wagtailapi/v2/pages/?type=learnpath.Circle&slug=analyse&fields=title,description,learning_sequences(title,learning_packages(title,my_title,learning_units(title)))
|
|
||||||
learning_sequences = LearningSequence.objects.filter(circle_id=self.id).values()
|
|
||||||
learning_packages = LearningPackage.objects.filter(learning_sequence__circle_id=self.id).values()
|
|
||||||
learning_units = LearningUnit.objects.filter(learning_package__learning_sequence__circle_id=self.id).values('learning_package_id', 'title')
|
|
||||||
|
|
||||||
content = OrderedDict()
|
|
||||||
content['learning_sequences'] = []
|
|
||||||
|
|
||||||
for learning_sequence in learning_sequences:
|
|
||||||
this_learning_packages = []
|
|
||||||
related_learning_packages = [lp for lp in learning_packages if lp['learning_sequence_id'] == learning_sequence['id']]
|
|
||||||
for learning_package in related_learning_packages:
|
|
||||||
related_learning_units = [lu for lu in learning_units if
|
|
||||||
lu['learning_package_id'] == learning_package['id']]
|
|
||||||
this_learning_units = [learning_unit for learning_unit in related_learning_units]
|
|
||||||
learning_package['learning_units'] = this_learning_units
|
|
||||||
this_learning_packages.append(learning_package)
|
|
||||||
learning_sequence['learning_packages'] = this_learning_packages
|
|
||||||
content['learning_sequences'].append(learning_sequence)
|
|
||||||
|
|
||||||
return content
|
|
||||||
|
|
||||||
def full_clean(self, *args, **kwargs):
|
def full_clean(self, *args, **kwargs):
|
||||||
self.slug = find_available_slug(Circle, slugify(self.title, allow_unicode=True))
|
self.slug = find_available_slug(Circle, slugify(self.title, allow_unicode=True))
|
||||||
super(Circle, self).full_clean(*args, **kwargs)
|
super(Circle, self).full_clean(*args, **kwargs)
|
||||||
|
|
@ -138,21 +109,10 @@ class Circle(Page, Orderable):
|
||||||
return f"{self.title}"
|
return f"{self.title}"
|
||||||
|
|
||||||
|
|
||||||
IN_CIRCLE = 'INCIRCLE'
|
@register_snippet
|
||||||
START = 'START'
|
|
||||||
END = 'END'
|
|
||||||
|
|
||||||
LEARNING_SEQUENCE_CATEGORIES = [
|
|
||||||
(IN_CIRCLE, 'In Circle'),
|
|
||||||
(START, 'Start'),
|
|
||||||
(END, 'End')
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
class LearningSequence(Orderable):
|
class LearningSequence(Orderable):
|
||||||
# TODO: How to do a icon choice field?
|
# TODO: How to do a icon choice field?
|
||||||
title = models.CharField(max_length=256, default='')
|
title = models.CharField(max_length=256, default='')
|
||||||
category = models.CharField(max_length=16, choices=LEARNING_SEQUENCE_CATEGORIES, default=IN_CIRCLE)
|
|
||||||
|
|
||||||
circle = ParentalKey(
|
circle = ParentalKey(
|
||||||
'learnpath.Circle',
|
'learnpath.Circle',
|
||||||
|
|
@ -162,7 +122,7 @@ class LearningSequence(Orderable):
|
||||||
related_name='learning_sequences',
|
related_name='learning_sequences',
|
||||||
)
|
)
|
||||||
|
|
||||||
panels = [FieldPanel('title'), FieldPanel('category'), FieldPanel('circle')]
|
panels = [FieldPanel('title'), FieldPanel('circle')]
|
||||||
|
|
||||||
api_fields = [
|
api_fields = [
|
||||||
APIField('title'),
|
APIField('title'),
|
||||||
|
|
@ -177,46 +137,18 @@ class LearningSequence(Orderable):
|
||||||
return f"{self.title}"
|
return f"{self.title}"
|
||||||
|
|
||||||
def full_clean(self, *args, **kwargs):
|
def full_clean(self, *args, **kwargs):
|
||||||
self.slug = find_available_slug(LearningSequence, slugify(self.title, allow_unicode=True))
|
|
||||||
super(LearningSequence, self).full_clean(*args, **kwargs)
|
super(LearningSequence, self).full_clean(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class LearningPackage(Orderable):
|
class LearningUnit(Page):
|
||||||
title = models.CharField(max_length=256, default='')
|
|
||||||
|
|
||||||
learning_sequence = models.ForeignKey(
|
|
||||||
'learnpath.LearningSequence',
|
|
||||||
null=True,
|
|
||||||
blank=True,
|
|
||||||
on_delete=models.SET_NULL,
|
|
||||||
related_name='learning_packages',
|
|
||||||
)
|
|
||||||
panels = [FieldPanel('title')]
|
|
||||||
|
|
||||||
api_fields = [
|
|
||||||
APIField('title'),
|
|
||||||
APIField('my_title'),
|
|
||||||
APIField('learning_units'),
|
|
||||||
]
|
|
||||||
|
|
||||||
@property
|
|
||||||
def my_title(self):
|
|
||||||
return self.title
|
|
||||||
|
|
||||||
def full_clean(self, *args, **kwargs):
|
|
||||||
self.slug = find_available_slug(LearningPackage, slugify(self.title, allow_unicode=True))
|
|
||||||
super(LearningPackage, self).full_clean(*args, **kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
class LearningUnit(Page, Orderable):
|
|
||||||
"""
|
"""
|
||||||
This is a group of contents, with the übung and test it is one unit. ... more of a structural charactacter.
|
This is a group of contents, with the übung and test it is one unit. ... more of a structural charactacter.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
# TODO: Review model architecture, is the stream field the right thing here?
|
# TODO: Review model architecture, is the stream field the right thing here?
|
||||||
parent_page_types = ['learnpath.Circle']
|
parent_page_types = ['learnpath.Circle']
|
||||||
learning_package = models.ForeignKey(
|
learning_sequence = models.ForeignKey(
|
||||||
'learnpath.LearningPackage',
|
'learnpath.LearningSequence',
|
||||||
null=True,
|
null=True,
|
||||||
blank=True,
|
blank=True,
|
||||||
on_delete=models.SET_NULL,
|
on_delete=models.SET_NULL,
|
||||||
|
|
@ -228,12 +160,13 @@ class LearningUnit(Page, Orderable):
|
||||||
('video', VideoBlock()),
|
('video', VideoBlock()),
|
||||||
]
|
]
|
||||||
|
|
||||||
contents = StreamField(StreamBlock(content_blocks),
|
contents = StreamField(
|
||||||
null=True, blank=True, min_num=1, max_num=1)
|
StreamBlock(content_blocks), null=True, blank=True, min_num=1, max_num=1
|
||||||
|
)
|
||||||
|
|
||||||
content_panels = [
|
content_panels = [
|
||||||
FieldPanel('title', classname="full title"),
|
FieldPanel('title', classname="full title"),
|
||||||
FieldPanel('learning_package'),
|
FieldPanel('learning_sequence'),
|
||||||
StreamFieldPanel('contents'),
|
StreamFieldPanel('contents'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -256,7 +189,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.
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,10 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from wagtail.core import blocks
|
from wagtail.core import blocks
|
||||||
from wagtail.api import APIField
|
|
||||||
|
|
||||||
|
|
||||||
# 'video_block'
|
|
||||||
class VideoBlock(blocks.StructBlock):
|
class VideoBlock(blocks.StructBlock):
|
||||||
# TODO: Possible video Types for the user, upload file, add URL
|
# TODO: Possible video Types for the user, upload file, add URL
|
||||||
title = models.CharField(max_length=128, default="")
|
title = models.CharField(max_length=255, default="")
|
||||||
description = models.TextField(default="")
|
description = models.TextField(default="")
|
||||||
url = blocks.URLBlock()
|
url = blocks.URLBlock()
|
||||||
|
|
||||||
|
|
@ -23,12 +21,11 @@ CONTENT_TYPE_CHOICES = (
|
||||||
(RISE, 'Rise'),
|
(RISE, 'Rise'),
|
||||||
)
|
)
|
||||||
|
|
||||||
# 'Web based training Block'
|
|
||||||
class WebBasedTrainingBlock(blocks.StructBlock):
|
|
||||||
|
|
||||||
|
class WebBasedTrainingBlock(blocks.StructBlock):
|
||||||
url = blocks.URLBlock()
|
url = blocks.URLBlock()
|
||||||
content_type = models.CharField(
|
content_type = models.CharField(
|
||||||
max_length=100,
|
max_length=255,
|
||||||
choices=CONTENT_TYPE_CHOICES,
|
choices=CONTENT_TYPE_CHOICES,
|
||||||
default=RISE
|
default=RISE
|
||||||
)
|
)
|
||||||
|
|
@ -40,12 +37,3 @@ class WebBasedTrainingBlock(blocks.StructBlock):
|
||||||
|
|
||||||
return {'sdfsdf': 1,
|
return {'sdfsdf': 1,
|
||||||
'sldkfm': 3}
|
'sldkfm': 3}
|
||||||
|
|
||||||
|
|
||||||
# 'Transver Task'
|
|
||||||
class TranverTaskBlock(blocks.StructBlock):
|
|
||||||
title = models.CharField(max_length=128, default="")
|
|
||||||
description = models.TextField(default="")
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
icon = 'media'
|
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,7 @@ from wagtail.core.models import Site
|
||||||
|
|
||||||
from vbv_lernwelt.learnpath.models import LearningPath, Topic, Circle, LearningSequence, LearningUnit
|
from vbv_lernwelt.learnpath.models import LearningPath, Topic, Circle, LearningSequence, LearningUnit
|
||||||
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, LearningUnitFactory, VideoBlockFactory, WebBasedTrainingBlockFactory, \
|
LearningSequenceFactory, LearningUnitFactory, VideoBlockFactory, WebBasedTrainingBlockFactory
|
||||||
LearningPackageFactory
|
|
||||||
|
|
||||||
|
|
||||||
def create_default_learning_path():
|
def create_default_learning_path():
|
||||||
|
|
@ -29,19 +28,6 @@ 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(title='Einleitung', circle=circle_1)
|
|
||||||
|
|
||||||
lpck_1 = LearningPackageFactory(title="Wunderbar !", learning_sequence=ls_1)
|
|
||||||
|
|
||||||
lu_1 = LearningUnitFactory(title="Herzlich Willkommmen", parent=circle_1, learning_package=lpck_1)
|
|
||||||
lu_1 = LearningUnitFactory(title="Herzlich Willkommmen 1", parent=circle_1, learning_package=lpck_1)
|
|
||||||
lu_1 = LearningUnitFactory(title="Herzlich Willkommmen 2", parent=circle_1, learning_package=lpck_1)
|
|
||||||
|
|
||||||
ls_2 = LearningSequenceFactory(title='Grundlagen', circle=circle_1)
|
|
||||||
lpck_1 = LearningPackageFactory(title="Wunderbar !", learning_sequence=ls_2)
|
|
||||||
|
|
||||||
lu_1 = LearningUnitFactory(title="Aber jetzt, Butter bei die Fische", parent=circle_1, learning_package=lpck_1)
|
|
||||||
|
|
||||||
tp = TopicFactory(title="Gewinnen von Kunden", learning_path=lp)
|
tp = TopicFactory(title="Gewinnen von Kunden", learning_path=lp)
|
||||||
|
|
||||||
circle_2 = CircleFactory(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
|
||||||
|
|
@ -77,10 +63,9 @@ von Neukunden zu benützen
|
||||||
zu visualisieren""")
|
zu visualisieren""")
|
||||||
|
|
||||||
sequence_1 = LearningSequenceFactory(title="Starten", circle=circle_4)
|
sequence_1 = LearningSequenceFactory(title="Starten", circle=circle_4)
|
||||||
lpck_1 = LearningPackageFactory(title="Wunderbar !", learning_sequence=sequence_1)
|
|
||||||
|
|
||||||
learning_unit = LearningUnitFactory(title='Einleitung Circle "Anlayse"', parent=circle_4, learning_package=lpck_1)
|
learning_unit = LearningUnitFactory(title='Einleitung Circle "Anlayse"', parent=circle_4, learning_sequence=sequence_1)
|
||||||
learning_unit = LearningUnitFactory.create(title='** Einstieg Video"', parent=circle_4, learning_package=lpck_1)
|
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."
|
||||||
|
|
@ -88,56 +73,38 @@ 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_package=lpck_1)
|
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(content_type="web_based_training", url=wbt_url)
|
wbt_block = WebBasedTrainingBlockFactory(content_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_sequence=sequence_1)
|
||||||
learning_unit = LearningUnitFactory.create(title="Selbsteinschätzung", parent=circle_4, learning_package=lpck_1)
|
|
||||||
|
|
||||||
sequence_2 = LearningSequenceFactory.create(title="Beobachten", circle=circle_4)
|
sequence_2 = LearningSequenceFactory.create(title="Beobachten", circle=circle_4)
|
||||||
lpck_1 = LearningPackageFactory(title="Wunderbar !", learning_sequence=sequence_2)
|
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_sequence=sequence_2)
|
||||||
learning_unit = LearningUnitFactory.create(title="Mein Motorfahrzeug kaufen", parent=circle_4, learning_package=lpck_1)
|
|
||||||
learning_unit = LearningUnitFactory.create(title="Sich selbständig machen", parent=circle_4, learning_package=lpck_1)
|
|
||||||
|
|
||||||
sequence_3 = LearningSequenceFactory.create(title="Anwenden", circle=circle_4)
|
sequence_3 = LearningSequenceFactory.create(title="Anwenden", circle=circle_4)
|
||||||
lpck_1 = LearningPackageFactory(title="Wunderbar !", learning_sequence=sequence_3)
|
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_sequence=sequence_3)
|
||||||
learning_unit = LearningUnitFactory.create(title="Nora kauft sich ein neues Auto", parent=circle_4, learning_package=lpck_1)
|
learning_unit = LearningUnitFactory.create(title="Deine Erkenntnisse und Learnings", parent=circle_4, learning_sequence=sequence_3)
|
||||||
learning_unit = LearningUnitFactory.create(title="Manuel träumt von einem neuen Tesla", parent=circle_4, learning_package=lpck_1)
|
|
||||||
|
|
||||||
lpck_1 = LearningPackageFactory(title="Wunderbar !", learning_sequence=sequence_3)
|
|
||||||
|
|
||||||
learning_unit = LearningUnitFactory.create(title="Deine Erkenntnisse und Learnings", parent=circle_4, learning_package=lpck_1)
|
|
||||||
|
|
||||||
sequence_4 = LearningSequenceFactory.create(title="Üben", circle=circle_4)
|
sequence_4 = LearningSequenceFactory.create(title="Üben", circle=circle_4)
|
||||||
|
learning_unit = LearningUnitFactory.create(title="Ermittlung des Kundenbedarfs", parent=circle_4, learning_sequence=sequence_4)
|
||||||
lpck_1 = LearningPackageFactory(title="Wunderbar !", learning_sequence=sequence_4)
|
learning_unit = LearningUnitFactory.create(title="Aktives Zuhören", parent=circle_4, learning_sequence=sequence_4)
|
||||||
learning_unit = LearningUnitFactory.create(title="Ermittlung des Kundenbedarfs", parent=circle_4, learning_package=lpck_1)
|
learning_unit = LearningUnitFactory.create(title="In Bildern Sprechen", parent=circle_4, learning_sequence=sequence_4)
|
||||||
learning_unit = LearningUnitFactory.create(title="Aktives Zuhören", parent=circle_4, learning_package=lpck_1)
|
learning_unit = LearningUnitFactory.create(title="Priorisieren des Bedarfs", parent=circle_4, learning_sequence=sequence_4)
|
||||||
learning_unit = LearningUnitFactory.create(title="In Bildern Sprechen", parent=circle_4, learning_package=lpck_1)
|
learning_unit = LearningUnitFactory.create(title="Zusammenfassung des Bedarfs", parent=circle_4, learning_sequence=sequence_4)
|
||||||
|
|
||||||
lpck_1 = LearningPackageFactory(title="Wunderbar !", learning_sequence=sequence_4)
|
|
||||||
learning_unit = LearningUnitFactory.create(title="Priorisieren des Bedarfs", parent=circle_4, learning_package=lpck_1)
|
|
||||||
learning_unit = LearningUnitFactory.create(title="Zusammenfassung des Bedarfs", parent=circle_4, learning_package=lpck_1)
|
|
||||||
|
|
||||||
sequence_5 = LearningSequenceFactory.create(title="Testen", circle=circle_4)
|
sequence_5 = LearningSequenceFactory.create(title="Testen", circle=circle_4)
|
||||||
lpck_1 = LearningPackageFactory(title="Wunderbar !", learning_sequence=sequence_5)
|
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_sequence=sequence_5)
|
||||||
learning_unit = LearningUnitFactory.create(title="Bedarfsfragen", parent=circle_4, learning_package=lpck_1)
|
|
||||||
learning_unit = LearningUnitFactory.create(title="Andwendung der Fragetechniken", parent=circle_4, learning_package=lpck_1)
|
|
||||||
|
|
||||||
sequence_5 = LearningSequenceFactory.create(title="Vernetzen", circle=circle_4)
|
sequence_5 = LearningSequenceFactory.create(title="Vernetzen", circle=circle_4)
|
||||||
lpck_1 = LearningPackageFactory(title="Wunderbar !", learning_sequence=sequence_5)
|
learning_unit = LearningUnitFactory.create(title="Online Training", parent=circle_4, learning_sequence=sequence_5)
|
||||||
|
|
||||||
learning_unit = LearningUnitFactory.create(title="Online Training", parent=circle_4, learning_package=lpck_1)
|
|
||||||
|
|
||||||
sequence_6 = LearningSequenceFactory.create(title="Beenden", circle=circle_4)
|
sequence_6 = LearningSequenceFactory.create(title="Beenden", circle=circle_4)
|
||||||
lpck_1 = LearningPackageFactory(title="Wunderbar !", learning_sequence=sequence_6)
|
learning_unit = LearningUnitFactory.create(title="Selbsteinschätzung", parent=circle_4, learning_sequence=sequence_6)
|
||||||
|
|
||||||
learning_unit = LearningUnitFactory.create(title="Selbsteinschätzung", parent=circle_4, learning_package=lpck_1)
|
|
||||||
|
|
||||||
circle_5 = CircleFactory.create(title="Lösung",
|
circle_5 = CircleFactory.create(title="Lösung",
|
||||||
parent=lp,
|
parent=lp,
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import factory
|
import factory
|
||||||
import wagtail_factories
|
import wagtail_factories
|
||||||
|
|
||||||
from vbv_lernwelt.learnpath.models import LearningPath, Topic, Circle, LearningSequence, LearningUnit, LearningPackage
|
from vbv_lernwelt.learnpath.models import LearningPath, Topic, Circle, LearningSequence, LearningUnit
|
||||||
from vbv_lernwelt.learnpath.models_learning_unit_content import VideoBlock, WebBasedTrainingBlock
|
from vbv_lernwelt.learnpath.models_learning_unit_content import VideoBlock, WebBasedTrainingBlock
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -33,12 +33,6 @@ class LearningSequenceFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = LearningSequence
|
model = LearningSequence
|
||||||
|
|
||||||
class LearningPackageFactory(factory.django.DjangoModelFactory):
|
|
||||||
title = "Whatever"
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = LearningPackage
|
|
||||||
|
|
||||||
|
|
||||||
class LearningUnitFactory(wagtail_factories.PageFactory):
|
class LearningUnitFactory(wagtail_factories.PageFactory):
|
||||||
title = "Herzlich Willkommen"
|
title = "Herzlich Willkommen"
|
||||||
|
|
@ -54,6 +48,7 @@ class VideoBlockFactory(wagtail_factories.StructBlockFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = VideoBlock
|
model = VideoBlock
|
||||||
|
|
||||||
|
|
||||||
class WebBasedTrainingBlockFactory(wagtail_factories.StructBlockFactory):
|
class WebBasedTrainingBlockFactory(wagtail_factories.StructBlockFactory):
|
||||||
title = "Beispiel Rise Modul"
|
title = "Beispiel Rise Modul"
|
||||||
url = "https://docs.wagtail.org/en/stable/topics/streamfield.html"
|
url = "https://docs.wagtail.org/en/stable/topics/streamfield.html"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue