From ddaa0570bcd1fded1281e24ebb33b14b10063317 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 5 Oct 2022 13:39:20 +0200 Subject: [PATCH] Revert "Use a temporary file for exports for more stable writing" --- src/pretix/base/services/export.py | 54 +++++++++--------------------- 1 file changed, 16 insertions(+), 38 deletions(-) diff --git a/src/pretix/base/services/export.py b/src/pretix/base/services/export.py index 1a686fcee7..41c9ffcdc0 100644 --- a/src/pretix/base/services/export.py +++ b/src/pretix/base/services/export.py @@ -19,8 +19,6 @@ # You should have received a copy of the GNU Affero General Public License along with this program. If not, see # . # -import inspect -import tempfile from typing import Any, Dict from django.conf import settings @@ -63,24 +61,14 @@ def export(self, event: Event, fileid: str, provider: str, form_data: Dict[str, continue ex = response(event, event.organizer, set_progress) if ex.identifier == provider: - with tempfile.TemporaryFile() as f: - if 'output_file' in inspect.signature(ex.render).parameters: - d = ex.render(form_data, output_file=f) - f.seek(0) - if d is None: - raise ExportError( - gettext('Your export did not contain any data.') - ) - file.filename, file.type, data = d - else: - d = ex.render(form_data) - if d is None: - raise ExportError( - gettext('Your export did not contain any data.') - ) - file.filename, file.type, data = d - f = ContentFile(data) - file.file.save(cachedfile_name(file, file.filename), f) + d = ex.render(form_data) + if d is None: + raise ExportError( + gettext('Your export did not contain any data.') + ) + file.filename, file.type, data = d + f = ContentFile(data) + file.file.save(cachedfile_name(file, file.filename), f) return file.pk @@ -141,22 +129,12 @@ def multiexport(self, organizer: Organizer, user: User, device: int, token: int, gettext('You do not have sufficient permission to perform this export.') ) - with tempfile.TemporaryFile() as f: - if 'output_file' in inspect.signature(ex.render).parameters: - d = ex.render(form_data, output_file=f) - f.seek(0) - if d is None: - raise ExportError( - gettext('Your export did not contain any data.') - ) - file.filename, file.type, data = d - else: - d = ex.render(form_data) - file.filename, file.type, data = d - if d is None: - raise ExportError( - gettext('Your export did not contain any data.') - ) - f = ContentFile(data) - file.file.save(cachedfile_name(file, file.filename), f) + d = ex.render(form_data) + if d is None: + raise ExportError( + gettext('Your export did not contain any data.') + ) + file.filename, file.type, data = d + f = ContentFile(data) + file.file.save(cachedfile_name(file, file.filename), f) return file.pk