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 ObjectiveGroupNode(DjangoObjectType): pk = graphene.Int() display_title = graphene.String() class Meta: model = ObjectiveGroup filter_fields = ['title', 'module__slug'] interfaces = (relay.Node,) def resolve_pk(self, *args, **kwargs): return self.id def resolve_display_title(self, *args, **kwargs): return self.get_title_display() class ObjectiveNode(DjangoObjectType): pk = graphene.Int() class Meta: model = Objective filter_fields = ['text'] interfaces = (relay.Node,) class ObjectiveProgressStatusNode(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(ObjectiveGroupNode)