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', 'type'] interfaces = (relay.Node,) only_fields = [ 'slug', 'title', 'type', 'contents', ] class BasicKnowledgeQuery(object): instrument = graphene.Field(BasicKnowledgeNode, slug=graphene.String(), id=graphene.ID()) instruments = DjangoFilterConnectionField(BasicKnowledgeNode) def resolve_instrument(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