46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
import graphene
|
|
from graphene import relay
|
|
from graphene_django import DjangoObjectType
|
|
from graphene_django.filter import DjangoFilterConnectionField
|
|
|
|
from user.models import UserGroup, User
|
|
|
|
|
|
class UserNode(DjangoObjectType):
|
|
pk = graphene.Int()
|
|
permissions = graphene.List(graphene.String)
|
|
|
|
class Meta:
|
|
model = User
|
|
filter_fields = ['username', 'email']
|
|
only_fields = ['username', 'email', 'first_name', 'last_name', 'usergroup_set', ]
|
|
interfaces = (relay.Node,)
|
|
|
|
def resolve_pk(self, info, **kwargs):
|
|
return self.id
|
|
|
|
def resolve_permissions(self, info):
|
|
return self.get_all_permissions()
|
|
|
|
|
|
class UserGroupNode(DjangoObjectType):
|
|
pk = graphene.Int()
|
|
|
|
class Meta:
|
|
model = UserGroup
|
|
filter_fields = ['name']
|
|
interfaces = (relay.Node,)
|
|
|
|
def resolve_pk(self, *args, **kwargs):
|
|
return self.id
|
|
|
|
|
|
class UsersQuery(object):
|
|
me = graphene.Field(UserNode)
|
|
all_users = DjangoFilterConnectionField(UserNode)
|
|
user_group = relay.Node.Field(UserGroupNode)
|
|
user_groups = DjangoFilterConnectionField(UserGroupNode)
|
|
|
|
def resolve_me(self, info, **kwargs):
|
|
return info.context.user
|