From b93e2307d0bd59abec65a6cf8754e00d49e15de3 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 4 Mar 2021 18:11:11 +0100 Subject: [PATCH] CachedFileField: Prevent double upload leading to empty file --- src/pretix/control/forms/__init__.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pretix/control/forms/__init__.py b/src/pretix/control/forms/__init__.py index dfa3914882..4acb2f492e 100644 --- a/src/pretix/control/forms/__init__.py +++ b/src/pretix/control/forms/__init__.py @@ -201,6 +201,8 @@ class CachedFileField(ExtFileField): from ...base.models import CachedFile if isinstance(data, File): + if hasattr(data, '_uploaded_to'): + return data._uploaded_to cf = CachedFile.objects.create( expires=now() + datetime.timedelta(days=1), date=now(), @@ -210,6 +212,7 @@ class CachedFileField(ExtFileField): ) cf.file.save(data.name, data.file) cf.save() + data._uploaded_to = cf return cf return super().bound_data(data, initial) @@ -218,6 +221,8 @@ class CachedFileField(ExtFileField): data = super().clean(*args, **kwargs) if isinstance(data, File): + if hasattr(data, '_uploaded_to'): + return data._uploaded_to cf = CachedFile.objects.create( expires=now() + datetime.timedelta(days=1), web_download=True, @@ -227,6 +232,7 @@ class CachedFileField(ExtFileField): ) cf.file.save(data.name, data.file) cf.save() + data._uploaded_to = cf return cf return data