From f6ab4195c436fe3b70a06665cd5b171bd2cfd530 Mon Sep 17 00:00:00 2001 From: Maximilian Richt Date: Mon, 1 Jun 2026 09:58:32 +0200 Subject: [PATCH] Use media_policy from item, not as a checkinrpc parameter --- src/pretix/api/serializers/checkin.py | 1 - src/pretix/api/views/checkin.py | 6 ++---- src/pretix/base/services/media.py | 3 ++- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/pretix/api/serializers/checkin.py b/src/pretix/api/serializers/checkin.py index 765e444fee..f26f03945e 100644 --- a/src/pretix/api/serializers/checkin.py +++ b/src/pretix/api/serializers/checkin.py @@ -90,7 +90,6 @@ class CheckinRPCRedeemInputSerializer(serializers.Serializer): answers = serializers.JSONField(required=False, allow_null=True) media_type = serializers.ChoiceField(required=False, choices=MEDIA_TYPES) media_identifier = serializers.CharField(required=False) - media_policy = serializers.ChoiceField(required=False, choices=Item.MEDIA_POLICIES) media_action = serializers.ChoiceField(required=False, choices=[ ('append', 'append'), ('replace', 'replace'), diff --git a/src/pretix/api/views/checkin.py b/src/pretix/api/views/checkin.py index f1e2baceeb..ff89f3b575 100644 --- a/src/pretix/api/views/checkin.py +++ b/src/pretix/api/views/checkin.py @@ -457,7 +457,7 @@ def _checkin_list_position_queryset(checkinlists, ignore_status=False, ignore_pr def _redeem_process(*, checkinlists, raw_barcode, answers_data, datetime, force, checkin_type, ignore_unpaid, nonce, untrusted_input, user, auth, expand, pdf_data, request, questions_supported, canceled_supported, source_type='barcode', legacy_url_support=False, simulate=False, gate=None, use_order_locale=False, - media_type=None, media_identifier=None, media_policy=None, media_action=None): + media_type=None, media_identifier=None, media_action=None): if not checkinlists: raise ValidationError('No check-in list passed.') @@ -805,13 +805,12 @@ def _redeem_process(*, checkinlists, raw_barcode, answers_data, datetime, force, locale = op.order.event.settings.locale with language(locale): try: - if all(k is not None for k in [media_type, media_identifier, media_policy, media_action]) and not media: + if all(k is not None for k in [media_type, media_identifier, media_action]) and not media: with transaction.atomic(): media = perform_media_exchange( organizer=request.organizer, media_type=media_type, media_identifier=media_identifier, - media_policy=media_policy, media_action=media_action, op=op, ) @@ -1079,7 +1078,6 @@ class CheckinRPCRedeemView(views.APIView): legacy_url_support=False, media_type=s.validated_data.get('media_type'), media_identifier=s.validated_data.get('media_identifier'), - media_policy=s.validated_data.get('media_policy'), media_action=s.validated_data.get('media_action'), ) diff --git a/src/pretix/base/services/media.py b/src/pretix/base/services/media.py index 6547963e30..ca3f7f9650 100644 --- a/src/pretix/base/services/media.py +++ b/src/pretix/base/services/media.py @@ -72,8 +72,9 @@ def get_keysets_for_organizer(organizer): return sets -def perform_media_exchange(organizer, media_type, media_identifier, media_policy, media_action, op): +def perform_media_exchange(organizer, media_type, media_identifier, media_action, op): medium = None + media_policy = op.item.media_policy if media_policy in [Item.MEDIA_POLICY_REUSE, Item.MEDIA_POLICY_REUSE_OR_NEW]: try: