diff --git a/passerelle/base/models.py b/passerelle/base/models.py index 0edb01ee..5de2a0cf 100644 --- a/passerelle/base/models.py +++ b/passerelle/base/models.py @@ -668,14 +668,18 @@ class BaseResource(models.Model): ).exists() def get_setting(self, name): + connector_settings = self.get_settings() + return connector_settings.get(name) + + def get_settings(self): connectors_settings = settings.CONNECTORS_SETTINGS if not isinstance(connectors_settings, dict): return None connector_identifier = f'{self.get_connector_slug()}/{self.slug}' - connector_settings = connectors_settings.get(connector_identifier) - if not isinstance(connector_settings, dict): - return None - return connector_settings.get(name) + connector_settings = connectors_settings.get(connector_identifier) or {} + if not isinstance(connectors_settings, dict): + return {} + return connector_settings class AccessRight(models.Model): diff --git a/passerelle/templates/passerelle/manage/service_view.html b/passerelle/templates/passerelle/manage/service_view.html index 44ef4f52..536812bc 100644 --- a/passerelle/templates/passerelle/manage/service_view.html +++ b/passerelle/templates/passerelle/manage/service_view.html @@ -56,6 +56,26 @@
{% endif %} {% endfor %} + {% block settings %} + {% if user.is_staff %} + {% for name, value in object.get_settings.items %} + {% if name == 'requests_substitutions' %} +{% trans "Requests substitutions:" %}
+{% trans "URL:" %} {{ requests_substitution.url }}
{% endif %} +{% trans "Search:" %} {{ requests_substitution.search }}
{% trans "Replace:" %} {{ requests_substitution.replace }}
abcd
' in paragraph
+ assert 'Replace: efgh
' in paragraph
+
+ def test_absent_when_unlogged(self, setup, app):
+ resp = app.get(setup['url'])
+ paragraph = str(resp.pyquery('#requests-substitutions'))
+ assert 'Requests substitutions' not in paragraph
+
+ def test_url(self, setup, app, admin_user, settings):
+ settings.CONNECTORS_SETTINGS['photon/t']['requests_substitutions'][0]['url'] = 'https://example.com/'
+ app = login(app)
+ resp = app.get(setup['url'])
+ paragraph = str(resp.pyquery('#requests-substitutions'))
+ assert 'URL: https://example.com/' in paragraph
diff --git a/tests/test_requests.py b/tests/test_requests.py
index 5a3d5cd8..4620ab5c 100644
--- a/tests/test_requests.py
+++ b/tests/test_requests.py
@@ -545,6 +545,7 @@ def test_requests_substitution(settings):
resource.requests_max_retries = {}
resource.slug = 'test'
resource.get_connector_slug.return_value = 'cmis'
+ resource.get_settings = lambda: BaseResource.get_settings(resource)
resource.get_setting = lambda name: BaseResource.get_setting(resource, name)
requests = Request(logger=logging.getLogger(), resource=resource)