From 9dc1328b478c4608c57a50847af5234add9ee804 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Thu, 9 Nov 2023 10:09:20 +0100 Subject: [PATCH] Keep sales-channels in same order (Z#23135800) (#3705) * Control: sort sales-channels desc * sort asc, force web first * Update src/pretix/base/channels.py --------- Co-authored-by: Raphael Michel --- src/pretix/base/channels.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/pretix/base/channels.py b/src/pretix/base/channels.py index dd7de550f0..c4f200496b 100644 --- a/src/pretix/base/channels.py +++ b/src/pretix/base/channels.py @@ -103,15 +103,17 @@ def get_all_sales_channels(): if _ALL_CHANNELS: return _ALL_CHANNELS - types = OrderedDict() + channels = [] for recv, ret in register_sales_channels.send(None): if isinstance(ret, (list, tuple)): - for r in ret: - types[r.identifier] = r + channels += ret else: - types[ret.identifier] = ret - _ALL_CHANNELS = types - return types + channels.append(ret) + channels.sort(key=lambda c: c.identifier) + _ALL_CHANNELS = OrderedDict([(c.identifier, c) for c in channels]) + if 'web' in _ALL_CHANNELS: + _ALL_CHANNELS.move_to_end('web', last=False) + return _ALL_CHANNELS class WebshopSalesChannel(SalesChannel):