From 7b5f1d39d1ec049e2d1f3057a9f64ca5d4ddc379 Mon Sep 17 00:00:00 2001 From: mattiagiupponi <51856725+mattiagiupponi@users.noreply.github.com> Date: Wed, 12 Oct 2022 09:50:04 +0200 Subject: [PATCH] [Fixes #10130] Data retriever dont assign the folder/file permissions correcly (#10131) Co-authored-by: Alessio Fabiani --- geonode/storage/data_retriever.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/geonode/storage/data_retriever.py b/geonode/storage/data_retriever.py index c9dcb0aa85a..80de09542af 100644 --- a/geonode/storage/data_retriever.py +++ b/geonode/storage/data_retriever.py @@ -111,6 +111,7 @@ def file_chunks_iterable(file, chunk_size=None): with open(self.file_path, "wb") as tmp_file, smart_open.open(uri=self._original_file_uri, mode="rb") as original_file: for chunk in file_chunks_iterable(original_file): tmp_file.write(chunk) + except Exception as e: logger.error(e) raise DataRetrieverExcepion(detail=e) @@ -158,12 +159,18 @@ def transfer_remote_files(self): for name, data_item_retriever in self.data_items.items(): file_path = data_item_retriever.transfer_remote_file(self.temporary_folder) self.file_paths[name] = Path(file_path) + os.chmod(file_path, settings.FILE_UPLOAD_PERMISSIONS) ''' Is more usefull to have always unzipped file than the zip file So in case is a zip_file, we unzip it and than delete it ''' if zipfile.is_zipfile(self.file_paths.get('base_file', 'not_zip')): self._unzip(zip_name=self.file_paths.get('base_file')) + + if settings.FILE_UPLOAD_DIRECTORY_PERMISSIONS is not None: + # value is always set by default as None + # https://docs.djangoproject.com/en/3.2/ref/settings/#file-upload-directory-permissions + os.chmod(self.temporary_folder, settings.FILE_UPLOAD_DIRECTORY_PERMISSIONS) return self.file_paths def get_paths(self, allow_transfer=False):