From 1ec27fff05d68e90cd5fbc22832c7aa06d9a1d47 Mon Sep 17 00:00:00 2001 From: Mira Weller Date: Fri, 7 Aug 2026 10:01:38 +0200 Subject: [PATCH] filter questionnaires by sales channel --- src/pretix/base/views/mixins.py | 5 ++++- src/pretix/presale/views/__init__.py | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/pretix/base/views/mixins.py b/src/pretix/base/views/mixins.py index 56adb27eea..8bde275fc7 100644 --- a/src/pretix/base/views/mixins.py +++ b/src/pretix/base/views/mixins.py @@ -27,7 +27,7 @@ from decimal import Decimal from django import forms from django.core.files.uploadedfile import UploadedFile from django.db import IntegrityError -from django.db.models import Prefetch, QuerySet +from django.db.models import Prefetch, Q, QuerySet from django.utils.functional import cached_property from django.utils.timezone import make_aware @@ -312,6 +312,9 @@ class OrderQuestionsViewMixin(BaseQuestionsViewMixin): qqs = qqs.filter(type='PS') else: qqs = qqs.filter(type__startswith='P') + qqs = qqs.filter( + Q(all_sales_channels=True) | Q(limit_sales_channels__identifier=self.order.sales_channel.identifier) + ) return list(self.order.positions.select_related( 'item', 'variation' ).prefetch_related( diff --git a/src/pretix/presale/views/__init__.py b/src/pretix/presale/views/__init__.py index b987f4950a..50ee1d25f0 100644 --- a/src/pretix/presale/views/__init__.py +++ b/src/pretix/presale/views/__init__.py @@ -41,7 +41,7 @@ from itertools import groupby from django.conf import settings from django.contrib import messages -from django.db.models import Exists, OuterRef, Prefetch, Sum +from django.db.models import Exists, OuterRef, Prefetch, Q, Sum from django.utils import translation from django.utils.functional import cached_property from django.utils.timezone import now @@ -399,7 +399,10 @@ def get_cart(request): request._cart_cache = CartPosition.objects.none() else: qqs = request.event.questionnaires.all() - qqs = qqs.filter(type='PS') + qqs = qqs.filter( + Q(all_sales_channels=True) | Q(limit_sales_channels__identifier=request.sales_channel.identifier), + type='PS' + ) request._cart_cache = CartPosition.objects.filter( cart_id=cart_id, event=request.event ).annotate(