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') id = 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)