From 6e6b75d55ec7616b9283a9aa2f703d95c971d9bd Mon Sep 17 00:00:00 2001 From: Mira Date: Fri, 1 Mar 2024 09:58:17 +0100 Subject: [PATCH] Don't double file extension in clean_filename (#3942) * Don't double file extension in clean_filename * Don't use display_name as ClearableBasenameFileInput.FakeFile.name Reason: it's used as the thumbnail source and therefore needs to be a valid file name and not some display name --- src/pretix/control/forms/__init__.py | 2 -- src/pretix/helpers/hierarkey.py | 9 +++++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/pretix/control/forms/__init__.py b/src/pretix/control/forms/__init__.py index c0105db33..f406774ec 100644 --- a/src/pretix/control/forms/__init__.py +++ b/src/pretix/control/forms/__init__.py @@ -123,8 +123,6 @@ class ClearableBasenameFileInput(forms.ClearableFileInput): @property def name(self): - if hasattr(self.file, 'display_name'): - return self.file.display_name return self.file.name @property diff --git a/src/pretix/helpers/hierarkey.py b/src/pretix/helpers/hierarkey.py index 3931680a7..691ce2260 100644 --- a/src/pretix/helpers/hierarkey.py +++ b/src/pretix/helpers/hierarkey.py @@ -32,9 +32,14 @@ def clean_filename(fname): "Terms.pdf" → "Terms.pdf.OybgvyAH.22c0583727d5bc.pdf" - This function reverses this operation: + This function reverses this operation (leaving names without doubled extension as-is): "Terms.pdf.OybgvyAH.22c0583727d5bc.pdf" → "Terms.pdf" + "Terms.pdf" → "Terms.pdf" """ ext = '.' + fname.split('.')[-1] - return fname.rsplit(ext + ".", 1)[0] + ext + parts = fname.rsplit(ext + ".", 1) + if len(parts) == 1: + return parts[0] + else: + return parts[0] + ext