Prevent joining the same class again
This commit is contained in:
parent
76fa510053
commit
2682b876b8
|
|
@ -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')
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue