44 lines
1.1 KiB
Python
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)
|