diff --git a/aleksis/core/schema/__init__.py b/aleksis/core/schema/__init__.py index 9a38928fc290d9b5858188156e106d0eb8c191ee..63ad68ff12fa338ac0abbbc7714dec614ef89d0c 100644 --- a/aleksis/core/schema/__init__.py +++ b/aleksis/core/schema/__init__.py @@ -74,6 +74,7 @@ class Query(graphene.ObjectType): groups = graphene.List(GroupType) group_by_id = graphene.Field(GroupType, id=graphene.ID()) + groups_by_owner = FilterOrderList(GroupType, owner=graphene.ID()) who_am_i = graphene.Field(UserType) @@ -154,6 +155,20 @@ class Query(graphene.ObjectType): raise PermissionDenied() return group + @staticmethod + def resolve_groups_by_owner(root, info, owner=None): + if owner: + owner = Person.objects.get(pk=owner) + if not info.context.user.has_perm("core.view_person_rule", owner): + raise PermissionDenied() + + elif has_person(info.context.user): + owner = info.context.user.person + else: + raise PermissionDenied() + + return owner.owner_of.all() + def resolve_who_am_i(root, info, **kwargs): return info.context.user