41 lines
1.6 KiB
Python
41 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'
|
|
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, 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 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) |