diff --git a/server/api/schema.py b/server/api/schema.py index 3a6287eb..97ba521f 100644 --- a/server/api/schema.py +++ b/server/api/schema.py @@ -7,6 +7,7 @@ from graphene_django.debug import DjangoDebug from api import graphene_wagtail # Keep this import exactly here, it's necessary for StreamField conversion from assignments.schema.mutations import AssignmentMutations from assignments.schema.queries import AssignmentsQuery, StudentSubmissionQuery +from basicknowledge.queries import BasicKnowledgeQuery from books.schema.mutations.main import BookMutations from books.schema.queries import BookQuery from core.schema.mutations.main import CoreMutations @@ -18,7 +19,7 @@ from users.schema import UsersQuery class Query(UsersQuery, RoomsQuery, ObjectivesQuery, BookQuery, AssignmentsQuery, StudentSubmissionQuery, - graphene.ObjectType): + BasicKnowledgeQuery, graphene.ObjectType): node = relay.Node.Field() if settings.DEBUG: diff --git a/server/basicknowledge/queries.py b/server/basicknowledge/queries.py new file mode 100644 index 00000000..aadb4eca --- /dev/null +++ b/server/basicknowledge/queries.py @@ -0,0 +1,32 @@ +import graphene +from graphene import relay +from graphene_django import DjangoObjectType +from graphene_django.filter import DjangoFilterConnectionField + +from api.utils import get_object +from .models import BasicKnowledge + + +class BasicKnowledgeNode(DjangoObjectType): + class Meta: + model = BasicKnowledge + filter_fields = ['slug'] + interfaces = (relay.Node,) + only_fields = [ + 'slug', 'title', 'type', 'contents', + ] + + +class BasicKnowledgeQuery(object): + basic_knowledge = graphene.Field(BasicKnowledgeNode, slug=graphene.String(), id=graphene.ID()) + basic_knowledge_pages = DjangoFilterConnectionField(BasicKnowledgeNode) + + def resolve_basic_knowledge(self, info, **kwargs): + slug = kwargs.get('slug') + room_id = kwargs.get('id') + + if room_id is not None: + return get_object(BasicKnowledge, room_id) + if slug is not None: + return BasicKnowledge.objects.get(slug=slug) + return None