From 2682b876b85310f7e2b23594d889328c3cc548a9 Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Wed, 12 Feb 2020 20:29:05 +0100 Subject: [PATCH] Prevent joining the same class again --- server/users/mutations.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/server/users/mutations.py b/server/users/mutations.py index 7a5c814b..8ce94560 100644 --- a/server/users/mutations.py +++ b/server/users/mutations.py @@ -1,11 +1,13 @@ import graphene from django.contrib.auth import update_session_auth_hash from django.core.exceptions import PermissionDenied +from django.db.models import Q from graphene import relay from api.utils import get_object from users.inputs import PasswordUpdateInput from users.models import SchoolClass, UserSetting +from users.schema import SchoolClassNode from users.serializers import PasswordSerialzer, AvatarUrlSerializer @@ -111,17 +113,18 @@ class JoinClass(relay.ClientIDMutation): code = graphene.String(required=True) success = graphene.Boolean() + school_class = graphene.Field(SchoolClassNode) @classmethod def mutate_and_get_payload(cls, root, info, **kwargs): user = info.context.user code = kwargs.get('code') try: - school_class = SchoolClass.objects.get(code__iexact=code) + school_class = SchoolClass.objects.get(Q(code__iexact=code) & ~Q(users=user)) school_class.users.add(user) - return cls(success=True) + return cls(success=True, school_class=school_class) except SchoolClass.DoesNotExist: raise CodeNotFoundException('Code ist nicht gültig')