from django.core.exceptions import PermissionDenied import graphene from graphene_django import DjangoObjectType from graphql import GraphQLError from aleksis.apps.tezor.models.base import Client from aleksis.apps.tezor.models.invoice import InvoiceGroup from aleksis.apps.tezor.schema.client import PaymentVariantChoiceType from aleksis.core.schema.base import FilterOrderList from aleksis.core.util.core_helpers import get_site_preferences from ..models import Event from .checkpoint import CheckpointCheckInMutation from .event import EventType from .event_additional_field import ( EventAdditionalFieldBatchCreateMutation, EventAdditionalFieldBatchDeleteMutation, EventAdditionalFieldBatchPatchMutation, EventAdditionalFieldType, ) from .event_registration import SendEventRegistrationMutation from .terms import TermsType class Query(graphene.ObjectType): event_additional_fields = FilterOrderList(EventAdditionalFieldType) event_by_id = graphene.Field(EventType, id=graphene.ID()) event_by_slug = graphene.Field(EventType, slug=graphene.String()) terms = FilterOrderList(TermsType) paweljong_payment_choices = graphene.List(PaymentVariantChoiceType) @staticmethod def resolve_event_by_id(root, info, id): event = Event.objects.get(pk=id) # if not info.context.user.has_perm("paweljong.view_person_rule", event): # return None return event @staticmethod def resolve_event_by_slug(root, info, slug): event = Event.objects.get(slug=slug) # if not info.context.user.has_perm("paweljong.view_person_rule", event): # return None return event @staticmethod def resolve_paweljong_payment_choices(root, info): client, __ = Client.objects.get_or_create(name=get_site_preferences()["paweljong__event_invoice_client_name"]) group, __ = InvoiceGroup.objects.get_or_create( name=get_site_preferences()["paweljong__event_invoice_group_name"], client=client, defaults={ "template_name": "paweljong/invoice_pdf.html", }, ) return group.get_variant_choices() class Mutation(graphene.ObjectType): checkpoint_check_in = CheckpointCheckInMutation.Field() create_event_additional_fields = EventAdditionalFieldBatchCreateMutation.Field() delete_event_additional_fields = EventAdditionalFieldBatchDeleteMutation.Field() update_event_additional_fields = EventAdditionalFieldBatchPatchMutation.Field() send_event_registration = SendEventRegistrationMutation.Field()