diff --git a/aleksis/apps/paweljong/schema/checkpoint.py b/aleksis/apps/paweljong/schema/checkpoint.py index 5c1b03cabd3ad7fa016b38f01626eb11ba79071e..7b4c091911cd986a092f60ff512f27f298fcccaa 100644 --- a/aleksis/apps/paweljong/schema/checkpoint.py +++ b/aleksis/apps/paweljong/schema/checkpoint.py @@ -4,9 +4,9 @@ from django.utils import timezone import graphene from graphene_django import DjangoObjectType +from aleksis.core.models import Person from aleksis.core.schema.base import PermissionsTypeMixin from aleksis.core.util.core_helpers import has_person -from aleksis.core.models import Person from ..models import Checkpoint, Event diff --git a/aleksis/apps/paweljong/schema/event_registration.py b/aleksis/apps/paweljong/schema/event_registration.py index 66ece1aa73c8ceacf41a8dd9ab2b6f46766be501..8de044036d8e78ffa5d0ff54167c51244f7d192b 100644 --- a/aleksis/apps/paweljong/schema/event_registration.py +++ b/aleksis/apps/paweljong/schema/event_registration.py @@ -1,4 +1,6 @@ +from django.db import transaction from django.contrib.auth.models import User +from django.core.exceptions import ValidationError from django.utils.text import slugify from django.utils.translation import gettext as _ @@ -50,11 +52,23 @@ class SendEventRegistrationMutation(graphene.Mutation): ok = graphene.Boolean() + @transaction.atomic def mutate(self, info, event: graphene.ID, event_registration: EventRegistrationInputType, **kwargs): event = Event.objects.get(pk=event) print(event_registration) + email = None + + if event_registration["email"] is not None: + _mail_address = MailAddress.objects.create( + local_part=event_registration["email"]["local_part"], + domain=event_registration["email"]["domain"], + ) + email = str(_mail_address) + elif event_registration["user"] is not None: + email = event_registration["user"]["email"] + # Create user if event_registration is not None: user = User.objects.create( @@ -69,7 +83,7 @@ class SendEventRegistrationMutation(graphene.Mutation): person, created = Person.objects.get_or_create( user=user, defaults={ - "email": event_registration["person"]["email"], + "email": email, "first_name": event_registration["person"]["first_name"], "last_name": event_registration["person"]["last_name"], }, @@ -134,7 +148,7 @@ class SendEventRegistrationMutation(graphene.Mutation): registration.cost = event.cost if event.max_cost is not None and event.max_cost > 0: - amount = event_registration["payment"].amount + amount = event_registration["payment"]["amount"] if amount < event.cost: voucher_amount = event.cost - amount @@ -183,4 +197,5 @@ class SendEventRegistrationMutation(graphene.Mutation): if event_registration["retraction_consent"]: return SendEventRegistrationMutation(ok=True) + raise ValidationError(_("Retraction consent is required")) return SendEventRegistrationMutation(ok=False)