Filter question by sales channel, default to pretixpos for POS devices

This commit is contained in:
Mira Weller
2026-09-30 21:03:28 +02:00
parent 3e087a4c9c
commit 7bc2eb04cd
2 changed files with 7 additions and 6 deletions
+2 -6
View File
@@ -467,7 +467,6 @@ with scopes_disabled():
class CompatQuestionFilter(FilterSet):
identifier = django_filters.CharFilter(field_name='question__identifier')
ask_during_checkin = django_filters.BooleanFilter(method='ask_during_checkin_qs')
sales_channel = django_filters.CharFilter(method='sales_channel_qs')
class Meta:
model = QuestionnaireChild
@@ -478,11 +477,6 @@ with scopes_disabled():
questionnaire__type=Questionnaire.QuestionnaireType.ORDER_POSITION_CHECKIN if value else Questionnaire.QuestionnaireType.ORDER_POSITION_SALE
)
def sales_channel_qs(self, qs, name, value):
return qs.filter(
Q(questionnaire__all_sales_channels=True) | Q(questionnaire__limit_sales_channels__identifier=value)
)
class CompatQuestionViewSet(ConditionalListView, viewsets.ModelViewSet):
serializer_class = CompatQuestionSerializer
@@ -495,7 +489,9 @@ class CompatQuestionViewSet(ConditionalListView, viewsets.ModelViewSet):
write_permission = 'event.items:write'
def get_queryset(self):
self.sales_channel_ident = self.request.query_params.get('sales_channel', getattr(self.request.auth, 'guessed_sales_channel_identifier', None) or 'web')
return QuestionnaireChild.objects.filter(
Q(questionnaire__all_sales_channels=True) | Q(questionnaire__limit_sales_channels__identifier=self.sales_channel_ident),
questionnaire__event=self.request.event,
# legacy compat only for position-level questions
questionnaire__type__startswith='P',
+5
View File
@@ -292,6 +292,11 @@ class Device(LoggedModel):
else:
return self.organizer.events.none()
@property
def guessed_sales_channel_identifier(self):
if self.software_brand.startswith("pretixPOS"):
return 'pretixpos'
class DeviceLastSeen(models.Model):
# This is a separate model since we expect it to get A LOT of writes and PostgreSQL always