From a8529e434a36bc7cf38801ebf624eb2ea39506c9 Mon Sep 17 00:00:00 2001 From: Sylvain Zimmer Date: Thu, 20 Mar 2025 00:16:00 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B(media)=20fix=20compatibility=20wit?= =?UTF-8?q?h=20Scaleway=20Object=20Storage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some providers with S3-compatible APIs have slightly different implementations. In this case, Scaleway didn't accept version_id="" and has a different version ID scheme. This was tested successfully and should remain compatible with any other provider. --- src/backend/core/api/viewsets.py | 2 +- src/backend/core/models.py | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/backend/core/api/viewsets.py b/src/backend/core/api/viewsets.py index 43a6177d..3bc0da0d 100644 --- a/src/backend/core/api/viewsets.py +++ b/src/backend/core/api/viewsets.py @@ -943,7 +943,7 @@ class DocumentViewSet( @drf.decorators.action( detail=True, methods=["get", "delete"], - url_path="versions/(?P[0-9a-f-]{36})", + url_path="versions/(?P[0-9a-z-]+)", ) # pylint: disable=unused-argument def versions_detail(self, request, pk, version_id, *args, **kwargs): diff --git a/src/backend/core/models.py b/src/backend/core/models.py index 34c3f71a..4edd40e8 100644 --- a/src/backend/core/models.py +++ b/src/backend/core/models.py @@ -582,9 +582,13 @@ class Document(MP_Node, BaseModel): def get_content_response(self, version_id=""): """Get the content in a specific version of the document""" - return default_storage.connection.meta.client.get_object( - Bucket=default_storage.bucket_name, Key=self.file_key, VersionId=version_id - ) + params = { + "Bucket": default_storage.bucket_name, + "Key": self.file_key, + } + if version_id: + params["VersionId"] = version_id + return default_storage.connection.meta.client.get_object(**params) def get_versions_slice(self, from_version_id="", min_datetime=None, page_size=None): """Get document versions from object storage with pagination and starting conditions"""