diff --git a/server/book/blocks.py b/server/book/blocks.py index 9a4e444b..689a7c56 100644 --- a/server/book/blocks.py +++ b/server/book/blocks.py @@ -34,7 +34,7 @@ class ImageUrlBlock(blocks.StructBlock): class Meta: icon = 'image' - title = blocks.RichTextBlock() + title = blocks.TextBlock() url = blocks.URLBlock() diff --git a/server/book/factories.py b/server/book/factories.py index 68e9fb99..8de941a2 100644 --- a/server/book/factories.py +++ b/server/book/factories.py @@ -2,9 +2,11 @@ import random import factory import wagtail_factories +from django.contrib.auth import get_user_model from factory import CREATE_STRATEGY from wagtail.core.rich_text import RichText +from assignments.models import Assignment from book.blocks import BasicKnowledgeBlock, ImageUrlBlock, LinkBlock, AssignmentBlock from book.models import Book, Topic, Module, Chapter, ContentBlock, TextBlock from core.factories import BasePageFactory, fake, DummyImageFactory, fake_paragraph, fake_title @@ -56,7 +58,7 @@ class BasicKnowledgeBlockFactory(wagtail_factories.StructBlockFactory): model = BasicKnowledgeBlock -class ImageUrlBlockBlockFactory(wagtail_factories.StructBlockFactory): +class ImageUrlBlockFactory(wagtail_factories.StructBlockFactory): title = fake_title() url = factory.LazyAttribute(lambda x: 'https://picsum.photos/600/400/?random') @@ -91,6 +93,7 @@ class ContentBlockFactory(BasePageFactory): 'basic_knowledge': BasicKnowledgeBlockFactory, 'assignment': AssignmentBlockFactory, 'image_block': wagtail_factories.ImageChooserBlockFactory, + 'image_url_block': ImageUrlBlockFactory, 'task': TextBlockFactory }) @@ -109,26 +112,41 @@ class ContentBlockFactory(BasePageFactory): if stream_field_name in kwargs: for idx, resource in enumerate(kwargs[stream_field_name]): value = resource['value'] - for jdx, field in enumerate(value): - block_type = resource['type'] - if block_type == 'text_block': - kwargs['{}__{}__{}__{}'.format(stream_field_name, idx, block_type, field)] = RichText( - value[field]) - if block_type == 'task': - kwargs['{}__{}__{}__{}'.format(stream_field_name, idx, block_type, field)] = RichText( - value[field]) - if block_type == 'basic_knowledge': - if field == 'description': - kwargs[ - '{}__{}__{}__{}'.format(stream_field_name, idx, block_type, field)] = RichText( + block_type = resource['type'] + + if block_type == 'assignment': + user = get_user_model().objects.first() + assignment = Assignment.objects.create( + title=value['title'], + assignment=value['assignment'], + owner=user + ) + kwargs['{}__{}__{}__{}'.format(stream_field_name, idx, block_type, 'assignment_id')] = assignment.id + + + else: + for jdx, field in enumerate(value): + + if block_type == 'text_block': + kwargs['{}__{}__{}__{}'.format(stream_field_name, idx, block_type, field)] = RichText( value[field]) - else: + if block_type == 'task': + kwargs['{}__{}__{}__{}'.format(stream_field_name, idx, block_type, field)] = RichText( + value[field]) + if block_type == 'basic_knowledge': + if field == 'description': + kwargs[ + '{}__{}__{}__{}'.format(stream_field_name, idx, block_type, field)] = RichText( + value[field]) + else: + kwargs[ + '{}__{}__{}__{}'.format(stream_field_name, idx, block_type, + field)] = 'https://google.ch' + elif block_type == 'image_url_block': kwargs[ - '{}__{}__{}__{}'.format(stream_field_name, idx, block_type, - field)] = 'https://google.ch' - elif block_type == 'image_block': - kwargs['{}__{}__{}__{}'.format(stream_field_name, idx, block_type, - 'image__title')] = fake_paragraph() + '{}__{}__{}__{}'.format(stream_field_name, idx, block_type, field)] = value[field] + + # image file # diff --git a/server/book/migrations/0006_auto_20181002_1359.py b/server/book/migrations/0006_auto_20181002_1359.py new file mode 100644 index 00000000..cd4f89fd --- /dev/null +++ b/server/book/migrations/0006_auto_20181002_1359.py @@ -0,0 +1,21 @@ +# Generated by Django 2.0.6 on 2018-10-02 13:59 + +from django.db import migrations +import wagtail.core.blocks +import wagtail.core.fields +import wagtail.images.blocks + + +class Migration(migrations.Migration): + + dependencies = [ + ('book', '0005_auto_20181001_1254'), + ] + + operations = [ + migrations.AlterField( + model_name='contentblock', + name='contents', + field=wagtail.core.fields.StreamField([('text_block', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.RichTextBlock())])), ('basic_knowledge', wagtail.core.blocks.StructBlock([('description', wagtail.core.blocks.RichTextBlock()), ('url', wagtail.core.blocks.URLBlock())])), ('assignment', wagtail.core.blocks.StructBlock([('assignment_id', wagtail.core.blocks.IntegerBlock())])), ('image_block', wagtail.images.blocks.ImageChooserBlock()), ('image_url_block', wagtail.core.blocks.StructBlock([('title', wagtail.core.blocks.TextBlock()), ('url', wagtail.core.blocks.URLBlock())])), ('link_block', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.TextBlock()), ('url', wagtail.core.blocks.URLBlock())])), ('task', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.RichTextBlock())], icon='tick')), ('video_block', wagtail.core.blocks.StructBlock([('url', wagtail.core.blocks.URLBlock())])), ('document_block', wagtail.core.blocks.StructBlock([('url', wagtail.core.blocks.URLBlock())]))], blank=True, null=True), + ), + ] diff --git a/server/core/management/commands/dummy_data.py b/server/core/management/commands/dummy_data.py index 31608f0f..e10e8106 100644 --- a/server/core/management/commands/dummy_data.py +++ b/server/core/management/commands/dummy_data.py @@ -19,7 +19,7 @@ data = [ 'topics': [ { 'order': 1, - 'title': 'Berufliche Grundbildung', + 'title': 'Geld und Kauf', 'teaser': 'Die berufliche Grundbildung lehrt Sie, den Arbeitsalltag erfolgreich zu bewältigen, Ihre Fähigkeiten zu entwickeln und beruflich flexibel zu sein. Ebenso wichtig ist der Umgang mit verschiedensten Mitmenschen. Eine angemessene mündliche Kommunikation erleichtert das Zusammenleben und Zusammenarbeiten.', 'modules': [ { @@ -34,7 +34,7 @@ data = [ }, { 'order': 2, - 'title': 'Mein neues Umfeld', + 'title': 'Lohn und Budget', 'meta_title': 'Modul 1', 'teaser': 'Die Berufsbildung ist ein neuer Lebensabschnit', 'intro': """ @@ -86,9 +86,15 @@ data = [ 'title': 'Auftrag 1', 'contents': [ { - 'type': 'text_block', + 'type': 'task', 'value': { - 'text': '

Sie haben diesen Sommer ihre Lehre begonnen. Was bedeutet dieser neue Abschnitt für Sie?
Halten Sie Ihre Erfahrungen im Raum «Mein Lehrbeginn» fest.

' + 'text': '

Stellen Sie sich eine Welt ohne Bargeld und andere Zahlungsmittel vor. Beschreiben Sie im Raum «Welt ohne Geld», was sich alles verändern würde.

' + } + }, + { + 'type': 'link', + 'value': { + 'text': '

Raum: Welt ohne Geld.

' } }, ] @@ -125,7 +131,7 @@ data = [ { 'type': 'task', 'value': { - 'text': '

In der Schweiz absolvieren fast alle Schulabgängerinnen und -abgänger nach der obligatorischen Schulzeit eine Ausbildung. 2016 traten 77 705 Jugendliche in eine berufliche Grundbildung ein. Im Unterschied zu früher lernen heute auch die meisten Frauen einen Beruf. Studieren Sie die folgende Grafik und beschreiben Sie in drei Sätzen, wie sich die Berufswahl in der Schweiz seit 1976 verändert hat.

' + 'text': '

In der Schweiz absolvieren fast alle Schulabgängerinnen und -abgänger nach der obligatorischen Schulzeit eine Ausbildung. 2016 traten 77 705 Jugendliche in eine berufliche Grundbildung ein. Im Unterschied zu früher lernen heute auch die meisten Frauen einen Beruf. Studieren Sie die folgende Grafik und beschreiben Sie in drei Sätzen, wie sich die Berufswahl in der Schweiz seit 1976 verändert hat.

' } }, ] @@ -334,9 +340,310 @@ data = [ }, { 'order': 3, - 'title': 'Lehrvertrag', + 'title': 'Geld', 'meta_title': 'Modul 2', - 'teaser': 'Haben Sie etwas in Ihrem Lehrvertrag noch nicht verstanden?' + 'teaser': ' Geld braucht jeder von uns im täglichen Leben.', + + 'intro': """ +

Jeder Bürger nutzt es. Nahezu jeden Tag. Kaum ein Tag vergeht, an dem wir nicht mit Münzen oder Geldscheinen bezahlen, bargeldlose Überweisungen tätigen oder andere Zahlungsmethoden verwenden. Doch was genau befindet sich da eigentlich in unserem Geldbeutel? Was ist das, was auf unseren Konten liegt und die Bezeichnung Geld trägt?

+ """, + 'objective_groups': [ + { + 'title': 'Gesellschaft', + 'objectives': [ + { + 'text': 'Ich kann Anlageformen für mich so auswählen, dass sie meiner wirtschaftlichen Situation und meiner Risikofreude entsprechen.' + }, + { + 'text': 'Ich kann die Vor- und Nachteile Zahlungsmittel unterscheiden und situativ für mich geeignete Zahlungsmittel wählen.' + }, + ] + }, + { + 'title': 'Sprache und Kommunikation', + 'objectives': [ + { + 'text': 'Ich kann zu wichtigen Aussagen aus einem Erklärvideo Notizen machen.' + }, + { + 'text': 'Ich kann ein Diagramm lesen und interpretieren.' + }, + { + 'text': 'Ich kann schriftlich eine dreizeilige Geschichte erzählen, die einen Spannungsbogen nach den Regeln der Dramaturgie aufweist.' + }, + ] + } + ], + 'chapters': [ + { + 'title': '2.1 Eine Welt ohne Geld?', + 'content_blocks': [ + { + 'type': 'plain', + 'title': 'Auftrag 1', + 'contents': [ + { + 'type': 'text_block', + 'value': { + 'text': '

Nach dem 2. Weltkrieg waren viele Städte und Fabriken zerstört. Die meisten Menschen hatten keine Arbeit, lebten in großer Not. Es wurden nur vereinzelt Güter produziert. Deshalb tauschten die Menschen Waren. die sie über den Krieg gerettet hatten. Wegen der Knappheit der Lebensmittel tauschte die in den Städten lebende Bevölkerung Teppiche. Schmuck. silberne Bestecke, Porzellan, Wäsche gegen Kartoffeln, Rüben, aus denen Sirup gekocht wurde. Mehl, Speck, Wurst und Schinken Lebensmittel bei den Landwirten ein. Bei den Bauern waren Arzneimittel von Apothekern und Zigaretten besonders begehrt. In den Städten bildeten sich Tauschringe. So wurde an Bretterwänden oder Schaufensterscheiben Zettel mit Tauschgesuchen angehängt:

' + } + }, + { + 'type': 'image_url_block', + 'value': { + 'title': '', + 'url': 'https://ucarecdn.com/6d57537c-f75f-4c2e-9ea5-d2e3d2490c0d/' + } + }, + { + 'type': 'assignment', + 'value': { + 'title': 'Tauschvorgänge', + 'assignment': 'Frau Linder schaut sich die Anhänge an der Bretterwand an. Sie möchte ihren Kinderwagen und die Babysachen gegen Kinderbekleidung eintauschen. Zeichnen Sie mit Hilfe der Ziffern die Tauschvorgänge nach, die Frau Linder in Gang setzen muss, damit sie am Schluss das gewünschte Gut in den Händen halten kann. Achtung: Es müssen nicht alle Ziffern verwendet werden.' + } + }, + { + 'type': 'assignment', + 'value': { + 'title': 'Schwierigkeiten von Tauschvorgängen', + 'assignment': 'Beschreiben Sie mindestens zwei Schwierigkeiten, welche sich bei diesen Tauschvorgängen ergeben können.' + } + }, + { + 'type': 'assignment', + 'value': { + 'title': 'Vorteile von Geld', + 'assignment': 'Welche Vorteile bietet Geld? Beantworten Sie die Frage, indem Sie Bezug auf die Tauschvorgänge von Frau Linder nehmen.' + } + }, + { + 'type': 'assignment', + 'value': { + 'title': 'Aufgaben von Geld', + 'assignment': 'Welche Aufgabe übernimmt Geld demnach heute u.a.?' + } + }, + ] + }, + ] + }, + { + 'title': '2.2 Geld regiert die Welt', + 'content_blocks': [ + { + 'type': 'plain', + 'title': 'Auftrag 2', + 'contents': [ + { + 'type': 'task', + 'value': { + 'text': '

Diskutieren Sie in einer Gruppe die Richtigkeit folgender Zitate:

' + } + }, + { + 'type': 'text_block', + 'value': { + 'text': '

«Ein reicher Mann ist oft nur ein armer Mann mit sehr viel Geld.» (Aristoteles Onassis)

' + } + }, + { + 'type': 'text_block', + 'value': { + 'text': '

«Die besten Dinge im Leben sind nicht die, die man für Geld bekommt.» (Albert Einstein)

' + } + }, + { + 'type': 'text_block', + 'value': { + 'text': '

«Wenn man kein Geld hat, denkt man immer an Geld. Wenn man Geld hat, denkt man nur noch an Geld.» (Jean Paul Getty)

' + } + }, + { + 'type': 'text_block', + 'value': { + 'text': '

«Zum Reichtum führen viele Wege, und die meisten von ihnen sind schmutzig.» (Maurus Tullius Cicero)

' + } + }, + { + 'type': 'text_block', + 'value': { + 'text': '

«Ein Geschäft, das nur Geld einbringt, ist ein schlechtes Geschäft.» (Henry Ford)

' + } + }, + { + 'type': 'task', + 'value': { + 'text': '

Schreiben Sie Ihr eigenes Zitat zum Thema «Geld». Teilen Sie Ihr Zitat in folgendem Raum mit der Klasse.

' + } + }, + { + 'type': 'link_block', + 'value': { + 'text': 'Raum: Geld Zitate', + 'url': 'https://myskillbox.ch/rooms' + } + }, + ] + }, + ] + }, + { + 'title': '2.3 Funktionen der Geschäftsbanken', + 'content_blocks': [ + { + 'type': 'yellow', + 'title': 'Basiswissen: Notizen', + 'contents': [ + { + 'type': 'basic_knowledge', + 'value': { + 'description': '

Um sich wichtige Inhalte eines Gesprächs, Films, Textes, o. Ä. besser merken zu können, empfiehlt es sich Notizen zu machen.

' + } + }, + ] + }, + { + 'type': 'plain', + 'title': 'Auftrag 3', + 'contents': [ + { + 'type': 'text_block', + 'value': { + 'text': '

Die Banken und Versicherungen haben es sich zur Aufgabe gemacht, mit Geld zu handeln. Die Geschäftsbanken wie die UBS, Credit Suisse, PostFinance, Raiffeisen oder Kantonalbanken sind unter anderem direkt mit Privatpersonen und Firmen in Kontakt. Sie leihen ihnen Geld und legen deren Geld an.

' + } + }, + { + 'type': 'assignment', + 'value': { + 'title': 'Notizen zum Video «Funktionen der Bank»', + 'assignment': 'Sehen Sie sich den Film zum Thema «Funktionen der Bank» an. Machen Sie sich Notizen zu den wichtigen Inhalten.' + } + }, + { + 'type': 'video_block', + 'value': { + 'url': 'https://www.youtube.com/watch?v=BPpLF3W2ZOc' + } + }, + { + 'type': 'task', + 'value': { + 'text': '

Vergleichen Sie Ihre Notizen mit den Musterlösungen und ergänzen Sie, wo nötig.

' + } + }, + { + 'type': 'link_block', + 'value': { + 'text': 'Musterlösung: Notizen', + 'url': 'https://myskillbox.ch/rooms' + } + }, + + ] + }, + ] + }, + { + 'title': '2.4 Geld aufbewahren', + 'content_blocks': [ + { + 'type': 'yellow', + 'title': 'Basiswissen: Geldanlagen', + 'contents': [ + { + 'type': 'basic_knowledge', + 'value': { + 'description': '

Hier braucht es eine kurze Beschreibung zum jeweiligen Thema. Dieser Inhaltblock muss immer gleich aufgebaut sein.

' + } + }, + ] + }, + { + 'type': 'plain', + 'title': 'Auftrag 4', + 'contents': [ + { + 'type': 'text_block', + 'value': { + 'text': '

Was machen Sie mit Geld, das Sie nicht sofort ausgeben wollen? Sie haben verschiedene Möglichkeiten.

' + } + }, + { + 'type': 'task', + 'value': { + 'text': '

Studieren Sie zuerst das Basiswissen zum Thema «Geldanlagen». Nach welchen drei grundsätzlichen Gesichtspunkten kann man die Geldanlage unterscheiden?

' + } + }, + { + 'type': 'assignment', + 'value': { + 'title': 'Notizen zum Video «Funktionen der Bank»', + 'assignment': 'Sehen Sie sich den Film zum Thema «Funktionen der Bank» an. Machen Sie sich Notizen zu den wichtigen Inhalten.' + } + }, + { + 'type': 'video_block', + 'value': { + 'url': 'https://www.youtube.com/watch?v=BPpLF3W2ZOc' + } + }, + { + 'type': 'task', + 'value': { + 'text': '

Vergleichen Sie Ihre Notizen mit den Musterlösungen und ergänzen Sie, wo nötig.

' + } + }, + { + 'type': 'link_block', + 'value': { + 'text': 'Musterlösung: Notizen', + 'url': 'https://myskillbox.ch/rooms' + } + }, + + ] + }, + ] + }, + { + 'title': '2.5 Geldinstitute im Vergleich', + 'content_blocks': [ + { + 'type': 'plain', + 'title': 'Auftrag 5', + 'contents': [ + { + 'type': 'task', + 'value': { + 'text': '

Bilden Sie Kleingruppen und wählen Sie eine der folgenden Geschäftsbanken: UBS, Credit Suisse, PostFinance, Raiffeisen, Zürcher Kantonalbank. Analysieren sie auf der Website der jeweiligen Bank die Konditionen für mindestens drei Spar- und Anlagemöglichkeiten. Tragen Sie die Konditionen in die unten verlinkte Vorlage ein.

' + } + }, + { + 'type': 'link_block', + 'value': { + 'text': 'Vorlage: Konditionen Analgeformen', + 'url': 'https://myskillbox.ch/rooms' + } + }, + { + 'type': 'task', + 'value': { + 'text': '

Vergleichen Sie in der Klasse die unterschiedlichen Konditionen der Geschäftsbanken.

' + } + }, + { + 'type': 'assignment', + 'value': { + 'title': 'Welche Geldanlage ist sinnvoll?', + 'assignment': 'Ziehen Sie drei für Ihre Situation sinnvolle Schlüsse, welche Geldanlage sinnvoll ist.' + } + }, + ] + }, + ] + }, + + ] }, { 'order': 4, @@ -353,8 +660,7 @@ data = [ ] } ] - } -] + }] class Command(BaseCommand): diff --git a/server/rooms/factories.py b/server/rooms/factories.py index 854c8836..47aff693 100644 --- a/server/rooms/factories.py +++ b/server/rooms/factories.py @@ -7,7 +7,7 @@ from factory import CREATE_STRATEGY from wagtail.core.rich_text import RichText from book.blocks import ImageUrlBlock -from book.factories import TextBlockFactory, BasicKnowledgeBlockFactory, ImageUrlBlockBlockFactory, LinkBlockFactory +from book.factories import TextBlockFactory, BasicKnowledgeBlockFactory, ImageUrlBlockFactory, LinkBlockFactory from core.factories import fake, fake_paragraph from rooms.models import Room, RoomEntry from user.models import UserGroup @@ -36,7 +36,7 @@ class RoomEntryFactory(factory.django.DjangoModelFactory): contents = wagtail_factories.StreamFieldFactory({ 'text_block': TextBlockFactory, - 'image_url_block': ImageUrlBlockBlockFactory, + 'image_url_block': ImageUrlBlockFactory, 'link_block': LinkBlockFactory }) @@ -52,10 +52,7 @@ class RoomEntryFactory(factory.django.DjangoModelFactory): kwargs['{}__{}__{}__{}'.format(stream_field_name, idx, block_type, field)] = RichText(value[field]) if block_type == 'image_url_block': - if field == 'url': - kwargs['{}__{}__{}__{}'.format(stream_field_name, idx, block_type, field)] = value[field] - else: - kwargs['{}__{}__{}__{}'.format(stream_field_name, idx, block_type, field)] = RichText(value[field]) + kwargs['{}__{}__{}__{}'.format(stream_field_name, idx, block_type, field)] = value[field] if block_type == 'link_block': kwargs['{}__{}__{}__{}'.format(stream_field_name, idx, block_type, field)] = value[field] diff --git a/server/rooms/migrations/0004_auto_20181002_1359.py b/server/rooms/migrations/0004_auto_20181002_1359.py new file mode 100644 index 00000000..f4709e50 --- /dev/null +++ b/server/rooms/migrations/0004_auto_20181002_1359.py @@ -0,0 +1,20 @@ +# Generated by Django 2.0.6 on 2018-10-02 13:59 + +from django.db import migrations +import wagtail.core.blocks +import wagtail.core.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('rooms', '0003_auto_20180927_0945'), + ] + + operations = [ + migrations.AlterField( + model_name='roomentry', + name='contents', + field=wagtail.core.fields.StreamField([('text_block', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.RichTextBlock())])), ('image_url_block', wagtail.core.blocks.StructBlock([('title', wagtail.core.blocks.TextBlock()), ('url', wagtail.core.blocks.URLBlock())])), ('link_block', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.TextBlock()), ('url', wagtail.core.blocks.URLBlock())])), ('video_block', wagtail.core.blocks.StructBlock([('url', wagtail.core.blocks.URLBlock())]))], blank=True, null=True), + ), + ]