Prevent joining the same class again

This commit is contained in:
Ramon Wenger 2020-02-12 20:29:05 +01:00
parent 76fa510053
commit 2682b876b8
1 changed files with 5 additions and 2 deletions

View File

@ -1,11 +1,13 @@
import graphene import graphene
from django.contrib.auth import update_session_auth_hash from django.contrib.auth import update_session_auth_hash
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
from django.db.models import Q
from graphene import relay from graphene import relay
from api.utils import get_object from api.utils import get_object
from users.inputs import PasswordUpdateInput from users.inputs import PasswordUpdateInput
from users.models import SchoolClass, UserSetting from users.models import SchoolClass, UserSetting
from users.schema import SchoolClassNode
from users.serializers import PasswordSerialzer, AvatarUrlSerializer from users.serializers import PasswordSerialzer, AvatarUrlSerializer
@ -111,17 +113,18 @@ class JoinClass(relay.ClientIDMutation):
code = graphene.String(required=True) code = graphene.String(required=True)
success = graphene.Boolean() success = graphene.Boolean()
school_class = graphene.Field(SchoolClassNode)
@classmethod @classmethod
def mutate_and_get_payload(cls, root, info, **kwargs): def mutate_and_get_payload(cls, root, info, **kwargs):
user = info.context.user user = info.context.user
code = kwargs.get('code') code = kwargs.get('code')
try: 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) school_class.users.add(user)
return cls(success=True) return cls(success=True, school_class=school_class)
except SchoolClass.DoesNotExist: except SchoolClass.DoesNotExist:
raise CodeNotFoundException('Code ist nicht gültig') raise CodeNotFoundException('Code ist nicht gültig')