diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 50eb362cd2e9c0e79882d923b3386fd680b5338c..da21104704623c6d9b8c26b5623b2d63e5dc17b3 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 deab0e28b5d93e854a020aad687a618817196536..e752d6e456dce1509360990cb8e685b7a12d48c9 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 0000000000000000000000000000000000000000..d4f76700793d2f7eededaac1b0361ebeff1a6a5a --- /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")