diff --git a/src/pretix/base/models/orders.py b/src/pretix/base/models/orders.py index fadf1c9729..1885923b20 100644 --- a/src/pretix/base/models/orders.py +++ b/src/pretix/base/models/orders.py @@ -2835,6 +2835,14 @@ class OrderPosition(AbstractPosition): (self.order.event.settings.change_allow_user_addons and ItemAddOn.objects.filter(base_item_id__in=[op.item_id for op in positions]).exists()) ) + @property + def code(self): + """ + A ticket code which is unique among all events of a single organizer, + built by the order code and the position number. + """ + return '{order_code}-{position}'.format(order_code=self.order.code, position=self.positionid) + class Transaction(models.Model): """ diff --git a/src/pretix/static/pretixcontrol/js/ui/main.js b/src/pretix/static/pretixcontrol/js/ui/main.js index a58dac8128..ddccaf635c 100644 --- a/src/pretix/static/pretixcontrol/js/ui/main.js +++ b/src/pretix/static/pretixcontrol/js/ui/main.js @@ -552,6 +552,16 @@ var form_handlers = function (el) { language: $("body").attr("data-select2-locale"), }); + el.find('[data-model-select2=json_script]').each(function() { + const selectedValue = this.value; + this.replaceChildren(); + $(this).select2({ + theme: "bootstrap", + language: $("body").attr("data-select2-locale"), + data: JSON.parse($(this.getAttribute('data-select2-src')).text()), + }).val(selectedValue).trigger('change'); + }); + el.find('input[data-typeahead-url]').each(function () { var $inp = $(this); if ($inp.data("ttTypeahead") || $inp.hasClass("tt-hint")) {