skillbox/server/portfolio/schema.py

32 lines
857 B
Python

import graphene
from graphene import relay
from graphene_django import DjangoObjectType
from graphene_django.filter import DjangoFilterConnectionField
from api.utils import get_by_id_or_slug
from portfolio.models import Project
class ProjectNode(DjangoObjectType):
pk = graphene.Int()
class Meta:
model = Project
filter_fields = ['slug', 'appearance']
interfaces = (relay.Node,)
def resolve_pk(self, *args, **kwargs):
return self.id
class PortfolioQuery(object):
project = graphene.Field(ProjectNode, id=graphene.ID(), slug=graphene.String())
projects = DjangoFilterConnectionField(ProjectNode)
def resolve_projects(self, info, **kwargs):
return Project.objects.all().order_by('-pk')
def resolve_project(self, info, **kwargs):
return get_by_id_or_slug(Project, **kwargs)