banktransfer import: Fix prefix confusion if shorter event name contains dash (Z#23234167)

This commit is contained in:
Kara Engelhardt
2026-05-18 17:05:30 +02:00
parent 3df5b1d075
commit 82fc3627cc
2 changed files with 51 additions and 1 deletions

View File

@@ -405,7 +405,7 @@ def process_banktransfers(self, job: int, data: list) -> None:
# 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)),
"|".join([re.escape(p).replace("\\-", r"[\- ]*") for p in sorted(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)
)

View File

@@ -834,3 +834,53 @@ def test_ambigious_date_with_region(env, job):
with scopes_disabled():
assert env[2].payments.last().info_data["date"] == "2016-05-03"
@pytest.mark.django_db
def test_event_name_prefix_contains_dash(env, orga_job):
event, user, o1, o2 = env
slugs = ['dummy-2', 'dummy2345']
for slug in slugs:
event = Event.objects.create(
organizer=event.organizer, name=slug.upper(), slug=slug,
date_from=now(), plugins='pretix.plugins.banktransfer,pretix.plugins.paypal'
)
with scopes_disabled():
o1.event = Event.objects.get(slug="dummy2345")
o1.save()
process_banktransfers(orga_job, [{
'payer': 'Karla Kundin',
'reference': f'DUMMY2345-{o1.code}',
'date': '2016-01-26',
'amount': '23.00'
}])
with scopes_disabled():
job = BankImportJob.objects.last()
t = job.transactions.last()
assert t.state == BankTransaction.STATE_VALID
@pytest.mark.xfail
@pytest.mark.django_db
def test_event_name_prefix_multiple_dashes(env, orga_job):
event, user, o1, o2 = env
slugs = ['dummy-2', 'dummy--2', 'dummy2345']
for slug in slugs:
event = Event.objects.create(
organizer=event.organizer, name=slug.upper(), slug=slug,
date_from=now(), plugins='pretix.plugins.banktransfer,pretix.plugins.paypal'
)
with scopes_disabled():
o1.event = Event.objects.get(slug="dummy-2")
o1.save()
process_banktransfers(orga_job, [{
'payer': 'Karla Kundin',
'reference': f'DUMMY2-{o1.code}',
'date': '2016-01-26',
'amount': '23.00'
}])
with scopes_disabled():
job = BankImportJob.objects.last()
t = job.transactions.last()
assert t.state == BankTransaction.STATE_VALID