skillbox/server/objectives/schema.py

44 lines
1.1 KiB
Python

import graphene
from graphene import relay
from graphene_django import DjangoObjectType
from graphene_django.filter import DjangoFilterConnectionField
from objectives.models import ObjectiveGroup, Objective, ObjectiveProgressStatus
class ObjectiveGroupType(DjangoObjectType):
pk = graphene.Int()
class Meta:
model = ObjectiveGroup
filter_fields = ['title', 'module__slug']
interfaces = (relay.Node,)
def resolve_pk(self, *args, **kwargs):
return self.id
class ObjectiveType(DjangoObjectType):
pk = graphene.Int()
class Meta:
model = Objective
filter_fields = ['text']
interfaces = (relay.Node,)
class ObjectiveProgressStatusType(DjangoObjectType):
pk = graphene.Int()
class Meta:
model = ObjectiveProgressStatus
filter_fields = ['objective__text', 'user__username', 'done']
interfaces = (relay.Node,)
def resolve_pk(self, *args, **kwargs):
return self.id
class ObjectivesQuery(object):
objective_groups = DjangoFilterConnectionField(ObjectiveGroupType)