mirror of
https://github.com/pretix/pretix.git
synced 2026-10-01 19:14:43 +00:00
Filter question by sales channel, default to pretixpos for POS devices
This commit is contained in:
@@ -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',
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user