From b3be64b9f357636ff7b51acd8cbeab0386b5c77f Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 5 Jan 2023 09:41:35 +0100 Subject: [PATCH] Bank transfer: Small parser improvement --- src/pretix/plugins/banktransfer/tasks.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/pretix/plugins/banktransfer/tasks.py b/src/pretix/plugins/banktransfer/tasks.py index cfe6f5b863..15af97e0eb 100644 --- a/src/pretix/plugins/banktransfer/tasks.py +++ b/src/pretix/plugins/banktransfer/tasks.py @@ -328,7 +328,10 @@ def process_banktransfers(self, job: int, data: list) -> None: pattern = re.compile( "(%s)[ \\-_]*([A-Z0-9]{%s,%s})" % ( - "|".join(re.escape(p).replace("\\-", r"[\- ]*") for p in prefixes), + # We need to sort prefixes by length with long ones first. In case we have an event with slug + # "CONF" and one with slug "CONF2022", we want CONF2022 to match first, to avoid the parser + # thinking "2022" is already the order code. + "|".join(sorted([re.escape(p).replace("\\-", r"[\- ]*") for p in prefixes], key=lambda p: len(p), reverse=True)), min(code_len_agg['min'] or 1, inr_len_agg['min'] or 1), max(code_len_agg['max'] or 5, inr_len_agg['max'] or 5) )