skillbox/server/books/schema/inputs.py

42 lines
1.5 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'
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')
class ContentElementInput(InputObjectType):
id = graphene.String()
type = InputTypes(required=True)
value = ContentElementValueInput()
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)