From ba8f273620a75c12b3d0b02e8882ae5f398b046c Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Tue, 9 Jun 2020 16:26:42 +0200 Subject: [PATCH 2/2] views: flag connectors with open access on homepage (#42123) --- passerelle/base/models.py | 8 +++++++ passerelle/static/css/style.css | 9 ++++++++ passerelle/templates/passerelle/manage.html | 10 ++++++--- tests/test_manager.py | 23 +++++++++++++++++++++ 4 files changed, 47 insertions(+), 3 deletions(-) diff --git a/passerelle/base/models.py b/passerelle/base/models.py index a3f1d00b..10f0d1a9 100644 --- a/passerelle/base/models.py +++ b/passerelle/base/models.py @@ -597,6 +597,14 @@ class BaseResource(models.Model): exception_to_text(exc_value), exc_info=exc_info) + @property + def has_open_access_right(self): + return AccessRight.objects.filter( + resource_type=ContentType.objects.get_for_model(self), + resource_pk=self.pk, + apiuser__key='' + ).exists() + @six.python_2_unicode_compatible class AccessRight(models.Model): diff --git a/passerelle/static/css/style.css b/passerelle/static/css/style.css index 4ffdc996..c962cc80 100644 --- a/passerelle/static/css/style.css +++ b/passerelle/static/css/style.css @@ -70,6 +70,15 @@ li span.connector-type { width: 100%; } +li span.connector-open { + display: block; + font-size: 85%; + opacity: 0.9; + position: absolute; + bottom: 5ex; + width: 100%; +} + ul.connectors { clear: both; } diff --git a/passerelle/templates/passerelle/manage.html b/passerelle/templates/passerelle/manage.html index d3ad2591..2fc83e91 100644 --- a/passerelle/templates/passerelle/manage.html +++ b/passerelle/templates/passerelle/manage.html @@ -19,9 +19,13 @@
diff --git a/tests/test_manager.py b/tests/test_manager.py index 771b79c6..e4a87b88 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -490,3 +490,26 @@ def test_manager_add_open_access_warning(app, admin_user): resp.form['confirm_open_access'] = True resp.form.submit().follow() assert AccessRight.objects.count() == 2 + + +def test_manager_open_access_flag(app, admin_user): + csv = CsvDataSource.objects.create(csv_file=File(StringIO('1;t\n'), 't.csv'), slug='t', title='t') + api = ApiUser.objects.create(username='test', fullname='test', keytype='', key='test') + + app = login(app) + resp = app.get('/manage/', status=200) + assert len(resp.pyquery('li.connector')) == 1 + assert not 'Open access' in resp.text + + obj_type = ContentType.objects.get_for_model(csv) + AccessRight.objects.create(codename='can_access', apiuser=api, resource_type=obj_type, + resource_pk=csv.pk) + + resp = app.get('/manage/', status=200) + assert not 'Open access' in resp.text + + api.key = '' + api.save() + + resp = app.get('/manage/', status=200) + assert 'Open access' in resp.text -- 2.20.1