From 166bddf721e9fa9485470d792ef46536d93a5d10 Mon Sep 17 00:00:00 2001
From: Julian Leucker <leuckerj@gmail.com>
Date: Wed, 5 Jul 2023 15:24:44 +0200
Subject: [PATCH] Allow getting a group by id

---
 aleksis/core/schema/__init__.py | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/aleksis/core/schema/__init__.py b/aleksis/core/schema/__init__.py
index fd9a93036..2c8358b45 100644
--- a/aleksis/core/schema/__init__.py
+++ b/aleksis/core/schema/__init__.py
@@ -72,6 +72,7 @@ class Query(graphene.ObjectType):
     person_by_id_or_me = graphene.Field(PersonType, id=graphene.ID())
 
     groups = graphene.List(GroupType)
+    group_by_id = graphene.Field(GroupType, id=graphene.ID())
 
     who_am_i = graphene.Field(UserType)
 
@@ -144,6 +145,19 @@ class Query(graphene.ObjectType):
     def resolve_groups(root, info, **kwargs):
         return get_objects_for_user(info.context.user, "core.view_group", Group)
 
+    @staticmethod
+    def resolve_group_by_id(root, info, id):
+        group = Group.objects.filter(id=id)
+
+        if len(group) != 1:
+            return None
+
+        group = group.first()
+
+        if not info.context.user.has_perm("core.view_group", group):
+            raise PermissionDenied()
+        return group
+
     def resolve_who_am_i(root, info, **kwargs):
         return info.context.user
 
-- 
GitLab