skillbox/server/book/schema/inputs.py

42 lines
1.6 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'
task = 'task'
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, basic_knowledge, image_block types')
description = graphene.String(description='To be used for basic_knowledge type')
title = graphene.String(description='To be used for image_block type')
task_text = graphene.String(description='To be used for task type')
class ContentElementInput(InputObjectType):
id = graphene.String()
type = InputTypes(required=True)
value = ContentElementValueInput()
class UserGroupContentBlockVisibility(InputObjectType):
user_group_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(UserGroupContentBlockVisibility)