From 1cd31eb95a9b3a630e29e7150004a47f267503c1 Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Thu, 25 Oct 2018 11:05:59 +0200 Subject: [PATCH] Add basic knowledge model and admin --- server/basicknowledge/__init__.py | 0 .../basicknowledge/migrations/0001_initial.py | 31 +++++++++++++++ server/basicknowledge/migrations/__init__.py | 0 server/basicknowledge/models.py | 38 +++++++++++++++++++ server/basicknowledge/wagtail_hooks.py | 11 ++++++ server/books/models/book.py | 2 +- server/core/settings.py | 2 + 7 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 server/basicknowledge/__init__.py create mode 100644 server/basicknowledge/migrations/0001_initial.py create mode 100644 server/basicknowledge/migrations/__init__.py create mode 100644 server/basicknowledge/models.py create mode 100644 server/basicknowledge/wagtail_hooks.py diff --git a/server/basicknowledge/__init__.py b/server/basicknowledge/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/server/basicknowledge/migrations/0001_initial.py b/server/basicknowledge/migrations/0001_initial.py new file mode 100644 index 00000000..74da6d78 --- /dev/null +++ b/server/basicknowledge/migrations/0001_initial.py @@ -0,0 +1,31 @@ +# Generated by Django 2.0.6 on 2018-10-25 08:59 + +from django.db import migrations, models +import django.db.models.deletion +import wagtail.core.blocks +import wagtail.core.fields +import wagtail.images.blocks + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('wagtailcore', '0040_page_draft_title'), + ] + + operations = [ + migrations.CreateModel( + name='BasicKnowledge', + 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')), + ('contents', wagtail.core.fields.StreamField([('text_block', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.RichTextBlock())])), ('image_block', wagtail.images.blocks.ImageChooserBlock()), ('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())])), ('document_block', wagtail.core.blocks.StructBlock([('url', wagtail.core.blocks.URLBlock())]))], blank=True, null=True)), + ('type', models.CharField(choices=[('language_communication', 'Sprache & Kommunikation'), ('society', 'Gesellschaft')], max_length=100)), + ], + options={ + 'abstract': False, + }, + bases=('wagtailcore.page',), + ), + ] diff --git a/server/basicknowledge/migrations/__init__.py b/server/basicknowledge/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/server/basicknowledge/models.py b/server/basicknowledge/models.py new file mode 100644 index 00000000..c7003227 --- /dev/null +++ b/server/basicknowledge/models.py @@ -0,0 +1,38 @@ +from django.db import models +from wagtail.admin.edit_handlers import FieldPanel, StreamFieldPanel +from wagtail.core.fields import StreamField +from wagtail.images.blocks import ImageChooserBlock + +from books.blocks import TextBlock, LinkBlock, VideoBlock, DocumentBlock +from core.wagtail_utils import StrictHierarchyPage + + +class BasicKnowledge(StrictHierarchyPage): + parent_page_types = ['books.book'] + + contents = StreamField([ + ('text_block', TextBlock()), + ('image_block', ImageChooserBlock()), + ('link_block', LinkBlock()), + ('video_block', VideoBlock()), + ('document_block', DocumentBlock()), + ], null=True, blank=True) + + LANGUAGE_COMMUNICATION = 'language_communication' + SOCIETY = 'society' + + TYPE_CHOICES = ( + (LANGUAGE_COMMUNICATION, 'Sprache & Kommunikation'), + (SOCIETY, 'Gesellschaft'), + ) + + type = models.CharField( + max_length=100, + choices=TYPE_CHOICES + ) + + content_panels = [ + FieldPanel('title', classname="full title"), + FieldPanel('type'), + StreamFieldPanel('contents') + ] diff --git a/server/basicknowledge/wagtail_hooks.py b/server/basicknowledge/wagtail_hooks.py new file mode 100644 index 00000000..864a3404 --- /dev/null +++ b/server/basicknowledge/wagtail_hooks.py @@ -0,0 +1,11 @@ +from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register +from .models import BasicKnowledge + + +class BasicKnowledgeAdmin(ModelAdmin): + model = BasicKnowledge + menu_label = 'Basiswissen' + list_display = ('title',) + + +modeladmin_register(BasicKnowledgeAdmin) diff --git a/server/books/models/book.py b/server/books/models/book.py index 383de484..bf88bc17 100644 --- a/server/books/models/book.py +++ b/server/books/models/book.py @@ -27,4 +27,4 @@ class Book(StrictHierarchyPage): template = 'generic_page.html' - subpage_types = ['books.Topic'] + subpage_types = ['books.Topic', 'basicknowledge.BasicKnowledge'] diff --git a/server/core/settings.py b/server/core/settings.py index a69414c6..fba4f128 100644 --- a/server/core/settings.py +++ b/server/core/settings.py @@ -50,9 +50,11 @@ INSTALLED_APPS = [ 'objectives', 'rooms', 'assignments', + 'basicknowledge', 'wagtail.contrib.forms', 'wagtail.contrib.redirects', + 'wagtail.contrib.modeladmin', 'wagtail.embeds', 'wagtail.sites', 'wagtail.users',