diff --git a/src/pretix/api/serializers/organizer.py b/src/pretix/api/serializers/organizer.py index fc77cc5d24..a7cc5d0271 100644 --- a/src/pretix/api/serializers/organizer.py +++ b/src/pretix/api/serializers/organizer.py @@ -26,6 +26,7 @@ from django.conf import settings from django.core.exceptions import ObjectDoesNotExist from django.db import transaction from django.db.models import Q +from django.templatetags.static import static from django.utils.crypto import get_random_string from django.utils.translation import gettext, gettext_lazy as _ from i18nfield.rest_framework import I18nField @@ -219,10 +220,12 @@ class FlexibleTicketRelatedField(serializers.PrimaryKeyRelatedField): class SalesChannelSerializer(I18nAwareModelSerializer): type = serializers.CharField(default="api") + icon_url = serializers.SerializerMethodField() class Meta: model = SalesChannel - fields = ('identifier', 'type', 'label', 'position') + fields = ('identifier', 'type', 'label', 'position', 'icon', 'icon_url') + read_only_fields = ('icon',) def validate_type(self, value): if (not self.instance or not self.instance.pk) and value != "api": @@ -246,6 +249,10 @@ class SalesChannelSerializer(I18nAwareModelSerializer): ) return value + def get_icon_url(self, instance): + if '.' in instance.icon: + return static(instance.icon) + class GiftCardSerializer(I18nAwareModelSerializer): value = serializers.DecimalField(max_digits=13, decimal_places=2, min_value=Decimal('0.00')) diff --git a/src/pretix/static/pretixcontrol/js/ui/questionnaires/QuestionnaireDetailForm.vue b/src/pretix/static/pretixcontrol/js/ui/questionnaires/QuestionnaireDetailForm.vue index 81b01761b6..6b747470bc 100644 --- a/src/pretix/static/pretixcontrol/js/ui/questionnaires/QuestionnaireDetailForm.vue +++ b/src/pretix/static/pretixcontrol/js/ui/questionnaires/QuestionnaireDetailForm.vue @@ -3,6 +3,7 @@ import {gettext} from "./gettextstub"; import {GroupedItems, Questionnaire, SalesChannel} from "./model"; import {inject, Ref, useId} from "vue"; import {i18n_any, QUESTIONNAIRE_TYPE, QUESTIONNAIRE_TYPE_LABEL, setListState} from "./helper"; +import SalesChannelIcon from "./SalesChannelIcon.vue"; const sales_channels: Ref = inject('pretix:env:organizer:sales_channels') @@ -26,15 +27,17 @@ const props = defineProps<{
-
+
@@ -49,6 +52,7 @@ const props = defineProps<{ + {{ i18n_any(channel.label) }}
diff --git a/src/pretix/static/pretixcontrol/js/ui/questionnaires/QuestionnaireElement.vue b/src/pretix/static/pretixcontrol/js/ui/questionnaires/QuestionnaireElement.vue index 7c550edf41..5f0d64b2c9 100644 --- a/src/pretix/static/pretixcontrol/js/ui/questionnaires/QuestionnaireElement.vue +++ b/src/pretix/static/pretixcontrol/js/ui/questionnaires/QuestionnaireElement.vue @@ -1,5 +1,5 @@ +