From f235d5042486b5ec86a25ab15d599f2dbd73c11e Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Wed, 5 Dec 2018 15:07:25 +0100 Subject: [PATCH] Add assignment as a snippet --- server/assignments/models.py | 15 ++++++++---- server/books/blocks.py | 5 +++- .../migrations/0006_auto_20181204_1629.py | 23 +++++++++++++++++++ 3 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 server/books/migrations/0006_auto_20181204_1629.py diff --git a/server/assignments/models.py b/server/assignments/models.py index f5bdd3e6..5266a6a2 100644 --- a/server/assignments/models.py +++ b/server/assignments/models.py @@ -1,21 +1,28 @@ from django.contrib.auth import get_user_model from django.db import models from django_extensions.db.models import TimeStampedModel - -from books.models import Module +from wagtail.admin.edit_handlers import FieldPanel +from wagtail.snippets.models import register_snippet +@register_snippet class Assignment(TimeStampedModel): title = models.CharField(max_length=255) assignment = models.TextField() deleted = models.BooleanField(default=False) owner = models.ForeignKey(get_user_model(), on_delete=models.PROTECT) # probably don't want to delete all assignments if a user gets deleted - module = models.ForeignKey(Module, related_name='assignments', on_delete=models.CASCADE) + module = models.ForeignKey('books.Module', related_name='assignments', on_delete=models.CASCADE) user_created = models.BooleanField(default=False) + panels = [ + FieldPanel('title'), + FieldPanel('assignment'), + FieldPanel('module'), + ] + def __str__(self): - return self.title + return self.title if not self.user_created else '{} (erstellt von {})'.format(self.title, self.owner) class StudentSubmission(TimeStampedModel): diff --git a/server/books/blocks.py b/server/books/blocks.py index 71c8583a..f6923627 100644 --- a/server/books/blocks.py +++ b/server/books/blocks.py @@ -1,4 +1,7 @@ from wagtail.core import blocks +from wagtail.snippets.blocks import SnippetChooserBlock + +from assignments.models import Assignment DEFAULT_RICH_TEXT_FEATURES = ['bold', 'italic', 'link', 'ol', 'ul'] @@ -43,7 +46,7 @@ class AssignmentBlock(blocks.StructBlock): class Meta: icon = 'download' - assignment_id = blocks.IntegerBlock() + assignment_id = SnippetChooserBlock(Assignment) # 'video_block' diff --git a/server/books/migrations/0006_auto_20181204_1629.py b/server/books/migrations/0006_auto_20181204_1629.py new file mode 100644 index 00000000..92c02738 --- /dev/null +++ b/server/books/migrations/0006_auto_20181204_1629.py @@ -0,0 +1,23 @@ +# Generated by Django 2.0.6 on 2018-12-04 16:29 + +import assignments.models +from django.db import migrations +import wagtail.core.blocks +import wagtail.core.fields +import wagtail.images.blocks +import wagtail.snippets.blocks + + +class Migration(migrations.Migration): + + dependencies = [ + ('books', '0005_auto_20181025_1155'), + ] + + 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()), ('basic_knowledge', wagtail.core.blocks.PageChooserBlock(required=True, target_model=['basicknowledge.BasicKnowledge']))])), ('assignment', wagtail.core.blocks.StructBlock([('assignment_id', wagtail.snippets.blocks.SnippetChooserBlock(assignments.models.Assignment))])), ('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), + ), + ]