base: show configured requests_substitutions (#74030)
This commit is contained in:
parent
8c2330fdc6
commit
45204e8501
|
@ -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):
|
||||
|
|
|
@ -56,6 +56,26 @@
|
|||
</p>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% block settings %}
|
||||
{% if user.is_staff %}
|
||||
{% for name, value in object.get_settings.items %}
|
||||
{% if name == 'requests_substitutions' %}
|
||||
<div id="requests-substitutions">
|
||||
<p>{% trans "Requests substitutions:" %}</p>
|
||||
<ul>
|
||||
{% for requests_substitution in value %}
|
||||
<li>
|
||||
{% if requests_substitution.url %}<p>{% trans "URL:" %} {{ requests_substitution.url }}</p>{% endif %}
|
||||
<p>{% trans "Search:" %} <code>{{ requests_substitution.search }}</code></p>
|
||||
<p>{% trans "Replace:" %} <code>{{ requests_substitution.replace }}</code></p>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
|
|
@ -808,3 +808,41 @@ def test_manager_open_access_flag(app, admin_user):
|
|||
|
||||
resp = app.get('/manage/', status=200)
|
||||
assert 'open access' in resp.text
|
||||
|
||||
|
||||
class TestRequestsSubstitutionsDisplay:
|
||||
@pytest.fixture
|
||||
def setup(self, settings):
|
||||
settings.CONNECTORS_SETTINGS = {
|
||||
"photon/t": {
|
||||
"requests_substitutions": [
|
||||
{
|
||||
'search': 'abcd',
|
||||
'replace': 'efgh',
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
photon = Photon.objects.create(slug='t')
|
||||
return {'url': photon.get_absolute_url()}
|
||||
|
||||
def test_shown_when_logged(self, setup, app, admin_user):
|
||||
app = login(app)
|
||||
resp = app.get(setup['url'])
|
||||
paragraph = str(resp.pyquery('#requests-substitutions'))
|
||||
assert 'Requests substitutions' in paragraph
|
||||
assert 'URL:' not in paragraph
|
||||
assert 'Search: <code>abcd</code>' in paragraph
|
||||
assert 'Replace: <code>efgh</code>' 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
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue