From 7624b62c34d3f91a6f08f003af6576b681a752c3 Mon Sep 17 00:00:00 2001 From: Julian Leucker <leuckerj@gmail.com> Date: Fri, 17 Mar 2023 20:18:47 +0100 Subject: [PATCH] Create schema for Rooms --- CHANGELOG.rst | 1 + aleksis/core/schema/__init__.py | 19 ++++++++++++++++++- aleksis/core/schema/room.py | 9 +++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 aleksis/core/schema/room.py diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 50eb362cd..da2110470 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -30,6 +30,7 @@ Added * [Dev] Introduce new mechanism to register classes over all apps. * Data template for `room` model used for haystack search indexing moved to core. * Support for two factor authentication via email codes and Webauthn. +* GraphQL schema for Rooms Changed ~~~~~~~ diff --git a/aleksis/core/schema/__init__.py b/aleksis/core/schema/__init__.py index deab0e28b..e752d6e45 100644 --- a/aleksis/core/schema/__init__.py +++ b/aleksis/core/schema/__init__.py @@ -9,7 +9,15 @@ from haystack.inputs import AutoQuery from haystack.query import SearchQuerySet from haystack.utils.loading import UnifiedIndex -from ..models import CustomMenu, DynamicRoute, Notification, PDFFile, Person, TaskUserAssignment +from ..models import ( + CustomMenu, + DynamicRoute, + Notification, + PDFFile, + Person, + Room, + TaskUserAssignment, +) from ..util.apps import AppConfig from ..util.core_helpers import get_allowed_object_ids, get_app_module, get_app_packages, has_person from .celery_progress import CeleryProgressFetchedMutation, CeleryProgressType @@ -21,6 +29,7 @@ from .message import MessageType from .notification import MarkNotificationReadMutation, NotificationType from .pdf import PDFFileType from .person import PersonMutation, PersonType +from .room import RoomType from .school_term import SchoolTermType # noqa from .search import SearchResultType from .system_properties import SystemPropertiesType @@ -59,6 +68,8 @@ class Query(graphene.ObjectType): two_factor = graphene.Field(TwoFactorType) + rooms = graphene.List(RoomType) + def resolve_ping(root, info, payload) -> str: return payload @@ -157,6 +168,12 @@ class Query(graphene.ObjectType): return None return info.context.user + @staticmethod + def resolve_rooms(root, info, **kwargs): + if info.context.user.is_anonymous: + return [] + return Room.objects.all() + class Mutation(graphene.ObjectType): update_person = PersonMutation.Field() diff --git a/aleksis/core/schema/room.py b/aleksis/core/schema/room.py new file mode 100644 index 000000000..d4f767007 --- /dev/null +++ b/aleksis/core/schema/room.py @@ -0,0 +1,9 @@ +from graphene_django import DjangoObjectType + +from ..models import Room + + +class RoomType(DjangoObjectType): + class Meta: + model = Room + fields = ("id", "name", "short_name") -- GitLab