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
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')