Skip to content
Snippets Groups Projects
__init__.py 2.55 KiB
Newer Older
from django.core.exceptions import PermissionDenied

import graphene
from graphene_django import DjangoObjectType
from graphql import GraphQLError

Hangzhi Yu's avatar
Hangzhi Yu committed
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)

Hangzhi Yu's avatar
Hangzhi Yu committed
    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

Hangzhi Yu's avatar
Hangzhi Yu committed
    @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()