skillbox/server/books/schema/inputs.py

47 lines
1.8 KiB
Python

import graphene
from graphene import InputObjectType
class InputTypes(graphene.Enum):
text_block = "text_block"
# basic_knowledge = 'basic_knowledge' # probably won't be using this over the API
assignment = "assignment"
image_block = "image_block"
image_url_block = "image_url_block"
link_block = "link_block"
video_block = "video_block"
document_block = "document_block"
content_list_item = "content_list_item"
subtitle = "subtitle"
readonly = "readonly"
class ContentElementValueInput(InputObjectType):
# we'll handle this with a single input, even tho it would be nice to have a type for every different possibility
# see discussion at https://github.com/graphql/graphql-js/issues/207
text = graphene.String(description="To be used for link_block, text_block types")
url = graphene.String(description="To be used for link, image_block types")
description = graphene.String(description="To be used for basic_knowledge type")
title = graphene.String(description="To be used for image_block, assignment type")
assignment = graphene.String(description="To be used for assignment type")
id = graphene.String(description="To be used for assignment type")
class ContentElementInput(InputObjectType):
id = graphene.String()
type = InputTypes(required=True)
value = ContentElementValueInput()
contents = graphene.List("books.schema.inputs.ContentElementInput")
class UserGroupBlockVisibility(InputObjectType):
school_class_id = graphene.ID(required=True)
hidden = graphene.Boolean(required=True)
class ContentBlockInput(InputObjectType):
title = graphene.String()
type = graphene.String()
contents = graphene.List(ContentElementInput)
visibility = graphene.List(UserGroupBlockVisibility)