37 lines
994 B
Python
37 lines
994 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, ProjectEntry
|
|
|
|
|
|
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 ProjectEntryNode(DjangoObjectType):
|
|
class Meta:
|
|
model = ProjectEntry
|
|
interfaces = (relay.Node,)
|
|
|
|
|
|
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)
|