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