Skip to content
Snippets Groups Projects
__init__.py 2.9 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 .site_preferences import PaweljongSitePreferencesType
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)

    paweljong_site_preferences = graphene.Field(PaweljongSitePreferencesType)

    @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"],
            defaults={
                "pledge_enabled": True,
            },
        )
Hangzhi Yu's avatar
Hangzhi Yu committed
        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()

    @staticmethod
    def resolve_paweljong_site_preferences(root, info, **kwargs):
        return get_site_preferences()


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()