base: show configured requests_substitutions (#74030)
This commit is contained in:
parent
8c2330fdc6
commit
45204e8501
|
@ -668,14 +668,18 @@ class BaseResource(models.Model):
|
||||||
).exists()
|
).exists()
|
||||||
|
|
||||||
def get_setting(self, name):
|
def get_setting(self, name):
|
||||||
|
connector_settings = self.get_settings()
|
||||||
|
return connector_settings.get(name)
|
||||||
|
|
||||||
|
def get_settings(self):
|
||||||
connectors_settings = settings.CONNECTORS_SETTINGS
|
connectors_settings = settings.CONNECTORS_SETTINGS
|
||||||
if not isinstance(connectors_settings, dict):
|
if not isinstance(connectors_settings, dict):
|
||||||
return None
|
return None
|
||||||
connector_identifier = f'{self.get_connector_slug()}/{self.slug}'
|
connector_identifier = f'{self.get_connector_slug()}/{self.slug}'
|
||||||
connector_settings = connectors_settings.get(connector_identifier)
|
connector_settings = connectors_settings.get(connector_identifier) or {}
|
||||||
if not isinstance(connector_settings, dict):
|
if not isinstance(connectors_settings, dict):
|
||||||
return None
|
return {}
|
||||||
return connector_settings.get(name)
|
return connector_settings
|
||||||
|
|
||||||
|
|
||||||
class AccessRight(models.Model):
|
class AccessRight(models.Model):
|
||||||
|
|
|
@ -56,6 +56,26 @@
|
||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% 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 %}
|
{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -808,3 +808,41 @@ def test_manager_open_access_flag(app, admin_user):
|
||||||
|
|
||||||
resp = app.get('/manage/', status=200)
|
resp = app.get('/manage/', status=200)
|
||||||
assert 'open access' in resp.text
|
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.requests_max_retries = {}
|
||||||
resource.slug = 'test'
|
resource.slug = 'test'
|
||||||
resource.get_connector_slug.return_value = 'cmis'
|
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)
|
resource.get_setting = lambda name: BaseResource.get_setting(resource, name)
|
||||||
|
|
||||||
requests = Request(logger=logging.getLogger(), resource=resource)
|
requests = Request(logger=logging.getLogger(), resource=resource)
|
||||||
|
|
Loading…
Reference in New Issue