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