From 9e70d51e8a7bcc53b69f90956b7e5fb7b2a0a13c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micka=C3=ABl=20Desfr=C3=AAnes?=
 <mickael.desfrenes@unicaen.fr>
Date: Thu, 6 Feb 2025 09:55:23 +0100
Subject: [PATCH] add cantaloupe config for test, pprd, prod

---
 pount/apps/iiif/storage_backends.py | 12 +++++++++++-
 pount/apps/iiif/views.py            |  4 +---
 pount/settings/common.py            | 11 +++++++++++
 pount/settings/dev.py               |  4 ++++
 pount/settings/preprod.py           |  6 ++++++
 pount/settings/prod.py              |  7 +++++++
 pount/settings/test.py              |  6 ++++++
 7 files changed, 46 insertions(+), 4 deletions(-)

diff --git a/pount/apps/iiif/storage_backends.py b/pount/apps/iiif/storage_backends.py
index 1c2b67ce..3f45cafc 100644
--- a/pount/apps/iiif/storage_backends.py
+++ b/pount/apps/iiif/storage_backends.py
@@ -1,5 +1,15 @@
+from django.conf import settings
+
 from pount.apps.api.storage_backends import MediaStorage
 
 
 class IIIFFileStorage(MediaStorage):
-    location = "iiif"
+    location = str(settings.CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_PATH_PREFIX).rstrip("/")
+
+    def get_default_settings(self):
+        default_settings = super().get_default_settings()
+        default_settings["access_key"] = settings.CANTALOUPE_S3SOURCE_ACCESS_KEY_ID
+        default_settings["secret_key"] = settings.CANTALOUPE_S3SOURCE_SECRET_KEY
+        default_settings["bucket_name"] = settings.CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME
+        default_settings["endpoint_url"] = settings.CANTALOUPE_S3SOURCE_ENDPOINT
+        return default_settings
diff --git a/pount/apps/iiif/views.py b/pount/apps/iiif/views.py
index 8a21ecc0..bc175f7a 100644
--- a/pount/apps/iiif/views.py
+++ b/pount/apps/iiif/views.py
@@ -1,5 +1,3 @@
-from os import environ
-
 import urllib3
 from django.conf import settings
 from django.contrib.auth import get_user_model
@@ -56,7 +54,7 @@ ProxyView.get_request_headers = get_request_headers
 
 
 class IIIFProxyView(ProxyView):
-    upstream = environ.get("IIIF_UPSTREAM_URL", "http://localhost:8182/iiif/")
+    upstream = settings.CANTALOUPE_IIIF_UPSTREAM_URL
     add_x_forwarded = True
 
     def __init__(self, *args, **kwargs):
diff --git a/pount/settings/common.py b/pount/settings/common.py
index b707df13..c903d32d 100644
--- a/pount/settings/common.py
+++ b/pount/settings/common.py
@@ -505,3 +505,14 @@ MONGODB_PASSWORD = environ.get("MONGODB_PASSWORD", "pount_dev")
 MONGODB_HOST = environ.get("MONGODB_HOST", "localhost")
 MONGODB_DATABASE = environ.get("MONGODB_DATABASE", "pount_dev")
 MONGODB_URI = f"mongodb://{MONGODB_USER}:{MONGODB_PASSWORD}@{MONGODB_HOST}/?retryWrites=true&w=majority&authSource={MONGODB_DATABASE}"
+
+
+##############
+# CANTALOUPE #
+##############
+CANTALOUPE_S3SOURCE_SECRET_KEY = environ.get("CANTALOUPE_S3SOURCE_SECRET_KEY", AWS_SECRET_ACCESS_KEY)
+CANTALOUPE_S3SOURCE_ACCESS_KEY_ID = environ.get("CANTALOUPE_S3SOURCE_ACCESS_KEY_ID", AWS_ACCESS_KEY_ID)
+CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME = environ.get("CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME", AWS_STORAGE_BUCKET_NAME)
+CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_PATH_PREFIX = environ.get("CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_PATH_PREFIX", "iiif/")
+CANTALOUPE_S3SOURCE_ENDPOINT = environ.get("CANTALOUPE_S3SOURCE_ENDPOINT", AWS_S3_ENDPOINT_URL)
+CANTALOUPE_IIIF_UPSTREAM_URL = environ.get("CANTALOUPE_IIIF_UPSTREAM_URL", "http://localhost:8182/iiif/")
diff --git a/pount/settings/dev.py b/pount/settings/dev.py
index b7433718..e845c06e 100644
--- a/pount/settings/dev.py
+++ b/pount/settings/dev.py
@@ -73,5 +73,9 @@ REST_FRAMEWORK["DEFAULT_AUTHENTICATION_CLASSES"] = [
     "rest_framework.authentication.SessionAuthentication",
 ]
 
+##############
+# CANTALOUPE #
+##############
+CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME = environ.get("CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME", AWS_STORAGE_BUCKET_NAME)
 
 icecream_install()
diff --git a/pount/settings/preprod.py b/pount/settings/preprod.py
index 27cf3f05..a8500fcb 100644
--- a/pount/settings/preprod.py
+++ b/pount/settings/preprod.py
@@ -106,3 +106,9 @@ MONGODB_PASSWORD = "{{ mongodb_password }}"
 MONGODB_HOST = "{{ mongodb_host }}"
 MONGODB_DATABASE = "{{ mongodb_database }}"
 MONGODB_URI = f"mongodb://{MONGODB_USER}:{MONGODB_PASSWORD}@{MONGODB_HOST}/?retryWrites=true&w=majority&authSource={MONGODB_DATABASE}"
+
+##############
+# CANTALOUPE #
+##############
+CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME = environ.get("CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME", "pount-iiif-pprd")
+CANTALOUPE_IIIF_UPSTREAM_URL = environ.get("CANTALOUPE_IIIF_UPSTREAM_URL", "http://cantaloupe-pprd-1.srv.unistra.fr:8182/iiif/")
diff --git a/pount/settings/prod.py b/pount/settings/prod.py
index 86ca0a5b..c898c149 100644
--- a/pount/settings/prod.py
+++ b/pount/settings/prod.py
@@ -106,3 +106,10 @@ MONGODB_PASSWORD = "{{ mongodb_password }}"
 MONGODB_HOST = "{{ mongodb_host }}"
 MONGODB_DATABASE = "{{ mongodb_database }}"
 MONGODB_URI = f"mongodb://{MONGODB_USER}:{MONGODB_PASSWORD}@{MONGODB_HOST}/?retryWrites=true&w=majority&authSource={MONGODB_DATABASE}"
+
+
+##############
+# CANTALOUPE #
+##############
+CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME = environ.get("CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME", "pount-iiif-prod")
+CANTALOUPE_IIIF_UPSTREAM_URL = environ.get("CANTALOUPE_IIIF_UPSTREAM_URL", "http://cantaloupe-prod-1.srv.unistra.fr:8182/iiif/")
diff --git a/pount/settings/test.py b/pount/settings/test.py
index 624fcb77..e266d4f6 100644
--- a/pount/settings/test.py
+++ b/pount/settings/test.py
@@ -120,3 +120,9 @@ REST_FRAMEWORK["DEFAULT_AUTHENTICATION_CLASSES"] = [
     "rest_framework.authentication.TokenAuthentication",
     "rest_framework.authentication.SessionAuthentication",
 ]
+
+##############
+# CANTALOUPE #
+##############
+CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME = environ.get("CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME", "pount-iiif-test")
+CANTALOUPE_IIIF_UPSTREAM_URL = environ.get("CANTALOUPE_IIIF_UPSTREAM_URL", "http://cantaloupe-test-1.srv.unistra.fr:8182/iiif/")
-- 
GitLab