Fix regression in export task

This commit is contained in:
Raphael Michel
2022-10-05 12:56:28 +02:00
parent 4e44a2809b
commit 9d686072e2

View File

@@ -19,10 +19,12 @@
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see # You should have received a copy of the GNU Affero General Public License along with this program. If not, see
# <https://www.gnu.org/licenses/>. # <https://www.gnu.org/licenses/>.
# #
import inspect
import tempfile import tempfile
from typing import Any, Dict from typing import Any, Dict
from django.conf import settings from django.conf import settings
from django.core.files.base import ContentFile
from django.utils.timezone import override from django.utils.timezone import override
from django.utils.translation import gettext from django.utils.translation import gettext
@@ -62,12 +64,18 @@ def export(self, event: Event, fileid: str, provider: str, form_data: Dict[str,
ex = response(event, event.organizer, set_progress) ex = response(event, event.organizer, set_progress)
if ex.identifier == provider: if ex.identifier == provider:
with tempfile.TemporaryFile() as f: with tempfile.TemporaryFile() as f:
d = ex.render(form_data, output_file=f) if 'output_file' in inspect.signature(ex.render).parameters:
d = ex.render(form_data, output_file=f)
file.filename, file.type, data = d
else:
d = ex.render(form_data)
file.filename, file.type, data = d
f = ContentFile(data)
if d is None: if d is None:
raise ExportError( raise ExportError(
gettext('Your export did not contain any data.') gettext('Your export did not contain any data.')
) )
file.filename, file.type, data = d
file.file.save(cachedfile_name(file, file.filename), f) file.file.save(cachedfile_name(file, file.filename), f)
return file.pk return file.pk
@@ -130,11 +138,16 @@ def multiexport(self, organizer: Organizer, user: User, device: int, token: int,
) )
with tempfile.TemporaryFile() as f: with tempfile.TemporaryFile() as f:
d = ex.render(form_data, output_file=f) if 'output_file' in inspect.signature(ex.render).parameters:
d = ex.render(form_data, output_file=f)
file.filename, file.type, data = d
else:
d = ex.render(form_data)
file.filename, file.type, data = d
f = ContentFile(data)
if d is None: if d is None:
raise ExportError( raise ExportError(
gettext('Your export did not contain any data.') gettext('Your export did not contain any data.')
) )
file.filename, file.type, data = d
file.file.save(cachedfile_name(file, file.filename), f) file.file.save(cachedfile_name(file, file.filename), f)
return file.pk return file.pk