From b49aff9480b3a7efc21ca276783cab52cb3af55e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Behmo?= Date: Mon, 2 Nov 2020 17:43:40 +0100 Subject: [PATCH] Fix "ValueError: I/O operation on closed file" with S3 in django-storages==1.6.5, te S3Boto3Storage backend closes the file after saving. This effectively prevents from re-opening the same file later. Bug: https://github.com/jschneier/django-storages/issues/382 Resolution: https://github.com/jschneier/django-storages/pull/754 --- openedxscorm/scormxblock.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openedxscorm/scormxblock.py b/openedxscorm/scormxblock.py index dbdf84f..0bcaee3 100644 --- a/openedxscorm/scormxblock.py +++ b/openedxscorm/scormxblock.py @@ -221,8 +221,10 @@ def studio_submit(self, request, _suffix): self.clean_storage() # Then, extract zip file + # At this point we can no longer use the package_file object because some storage backends close the file after + # saving. So we need to re-open the file, this time from the storage backend. try: - self.extract_package(package_file) + self.extract_package(self.storage.open(self.package_path)) self.update_package_fields() except ScormError as e: response["errors"].append(e.args[0])