From 9e84908d10193d3cf612398a781518acef02d48a Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Fri, 26 Apr 2024 13:33:11 +0200 Subject: [PATCH 1/7] Update mutation to also handle solutions --- server/books/schema/inputs.py | 1 + server/books/schema/mutations/utils.py | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/server/books/schema/inputs.py b/server/books/schema/inputs.py index 663852ac..0afd5f86 100644 --- a/server/books/schema/inputs.py +++ b/server/books/schema/inputs.py @@ -13,6 +13,7 @@ class InputTypes(graphene.Enum): document_block = "document_block" content_list_item = "content_list_item" subtitle = "subtitle" + solution = "solution" readonly = "readonly" diff --git a/server/books/schema/mutations/utils.py b/server/books/schema/mutations/utils.py index 6a9058e2..ed02486c 100644 --- a/server/books/schema/mutations/utils.py +++ b/server/books/schema/mutations/utils.py @@ -6,8 +6,11 @@ import bleach from api.utils import get_object from assignments.models import Assignment from books.models import ContentBlock +from core.logger import get_logger from wagtail.blocks import StreamValue +logger = get_logger(__name__) + class AssignmentParameterException(Exception): pass @@ -46,6 +49,7 @@ ALLOWED_BLOCKS = ( "document_block", "content_list_item", "subtitle", + "solution", "readonly", ) @@ -75,6 +79,7 @@ def handle_content_block( # todo: add all the content blocks # todo: sanitize user inputs! if content["type"] not in allowed_blocks: + logger.info("not in allowed blocks") return id = content.get("id") @@ -136,6 +141,12 @@ def handle_content_block( content_type = "document_block" value = {"url": bleach.clean(content["value"]["url"])} return get_content_dict(content_type=content_type, id=id, value=value) + elif content["type"] == "solution": + content_type = "solution" + value = { + "text": handle_text(bleach.clean(content["value"]["text"], strip=True)), + } + return get_content_dict(content_type=content_type, id=id, value=value) elif content["type"] == "subtitle": content_type = "subtitle" value = {"text": bleach.clean(content["value"]["text"])} From db628eec24cabf7ec2e07fbb449999eeaa3bb4d6 Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Fri, 26 Apr 2024 13:38:23 +0200 Subject: [PATCH 2/7] Add new solution form to element chooser workflow --- .../content-block-form/ContentElement.vue | 79 ++++------ .../content-forms/ChooserElement.vue | 27 ++-- .../ContentBlockElementChooserWidget.vue | 19 ++- .../content-forms/DocumentInput.vue | 139 ++++++++++++++++++ .../components/content-forms/SolutionForm.vue | 37 +++++ .../src/components/ui/form-element-icons.js | 30 ++-- 6 files changed, 235 insertions(+), 96 deletions(-) create mode 100644 client/src/components/content-forms/DocumentInput.vue create mode 100644 client/src/components/content-forms/SolutionForm.vue diff --git a/client/src/components/content-block-form/ContentElement.vue b/client/src/components/content-block-form/ContentElement.vue index f1ed33eb..50f7abfa 100644 --- a/client/src/components/content-block-form/ContentElement.vue +++ b/client/src/components/content-block-form/ContentElement.vue @@ -1,3 +1,4 @@ + - diff --git a/client/src/components/content-forms/ContentBlockElementChooserWidget.vue b/client/src/components/content-forms/ContentBlockElementChooserWidget.vue index 08940fa9..74673ff0 100644 --- a/client/src/components/content-forms/ContentBlockElementChooserWidget.vue +++ b/client/src/components/content-forms/ContentBlockElementChooserWidget.vue @@ -38,7 +38,7 @@ - + + diff --git a/client/src/components/content-forms/SolutionForm.vue b/client/src/components/content-forms/SolutionForm.vue new file mode 100644 index 00000000..93432158 --- /dev/null +++ b/client/src/components/content-forms/SolutionForm.vue @@ -0,0 +1,37 @@ +