From 93927b963c3d29d3c4b609880dda8f639c33ab0f Mon Sep 17 00:00:00 2001 From: pdelboca Date: Fri, 8 Apr 2022 08:04:00 -0300 Subject: [PATCH 1/4] Add support for 2.10 --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b1ba4a9..887c1cd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,7 +17,7 @@ jobs: needs: lint strategy: matrix: - ckan-version: [2.9, 2.9-py2, 2.8, 2.7] + ckan-version: [2.10, 2.9, 2.9-py2, 2.8, 2.7] fail-fast: false name: CKAN ${{ matrix.ckan-version }} @@ -26,7 +26,7 @@ jobs: image: openknowledge/ckan-dev:${{ matrix.ckan-version }} services: solr: - image: ckan/ckan-solr-dev:${{ matrix.ckan-version }} + image: ckan/ckan-solr:${{ matrix.ckan-version }} postgres: image: ckan/ckan-postgres-dev:${{ matrix.ckan-version }} env: From a5e8586b887dd4f500262d862766856dd4c22cdd Mon Sep 17 00:00:00 2001 From: pdelboca Date: Fri, 8 Apr 2022 08:06:17 -0300 Subject: [PATCH 2/4] Fix typo --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 887c1cd..3f0740a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,7 +17,7 @@ jobs: needs: lint strategy: matrix: - ckan-version: [2.10, 2.9, 2.9-py2, 2.8, 2.7] + ckan-version: ["2.10", 2.9, 2.9-py2, 2.8, 2.7] fail-fast: false name: CKAN ${{ matrix.ckan-version }} From c2629bd4b01c2779b8c856608bf43396fcae0bc1 Mon Sep 17 00:00:00 2001 From: pdelboca Date: Fri, 8 Apr 2022 08:20:14 -0300 Subject: [PATCH 3/4] Do not use built-in as validator --- ckanext/pdfview/plugin.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ckanext/pdfview/plugin.py b/ckanext/pdfview/plugin.py index 30711c6..430a0cb 100644 --- a/ckanext/pdfview/plugin.py +++ b/ckanext/pdfview/plugin.py @@ -1,11 +1,11 @@ # encoding: utf-8 import logging -from six import text_type import ckan.plugins as p log = logging.getLogger(__name__) ignore_empty = p.toolkit.get_validator('ignore_empty') +url_validator = p.toolkit.get_validator('url_validator') class PDFView(p.SingletonPlugin): @@ -21,7 +21,7 @@ def info(self): return {'name': 'pdf_view', 'title': p.toolkit._('PDF'), 'icon': 'file-pdf-o', - 'schema': {'pdf_url': [ignore_empty, text_type]}, + 'schema': {'pdf_url': [ignore_empty, url_validator]}, 'iframed': False, 'always_available': False, 'default_title': p.toolkit._('PDF'), From 9dfd2c20883ba401e5ed70571c4d13a906657395 Mon Sep 17 00:00:00 2001 From: pdelboca Date: Fri, 8 Apr 2022 08:27:11 -0300 Subject: [PATCH 4/4] Black formatter --- ckanext/pdfview/plugin.py | 31 +++++++++++++------------- ckanext/pdfview/tests/test_view.py | 35 +++++++++++++++++------------- 2 files changed, 36 insertions(+), 30 deletions(-) diff --git a/ckanext/pdfview/plugin.py b/ckanext/pdfview/plugin.py index 430a0cb..0036537 100644 --- a/ckanext/pdfview/plugin.py +++ b/ckanext/pdfview/plugin.py @@ -4,34 +4,35 @@ import ckan.plugins as p log = logging.getLogger(__name__) -ignore_empty = p.toolkit.get_validator('ignore_empty') -url_validator = p.toolkit.get_validator('url_validator') +ignore_empty = p.toolkit.get_validator("ignore_empty") +url_validator = p.toolkit.get_validator("url_validator") class PDFView(p.SingletonPlugin): - '''This plugin makes views of PDF resources, using an tag''' + """This plugin makes views of PDF resources, using an tag""" p.implements(p.IConfigurer, inherit=True) p.implements(p.IResourceView, inherit=True) def update_config(self, config): - p.toolkit.add_template_directory(config, 'theme/templates') + p.toolkit.add_template_directory(config, "theme/templates") def info(self): - return {'name': 'pdf_view', - 'title': p.toolkit._('PDF'), - 'icon': 'file-pdf-o', - 'schema': {'pdf_url': [ignore_empty, url_validator]}, - 'iframed': False, - 'always_available': False, - 'default_title': p.toolkit._('PDF'), - } + return { + "name": "pdf_view", + "title": p.toolkit._("PDF"), + "icon": "file-pdf-o", + "schema": {"pdf_url": [ignore_empty, url_validator]}, + "iframed": False, + "always_available": False, + "default_title": p.toolkit._("PDF"), + } def can_view(self, data_dict): - return (data_dict['resource'].get('format', '').lower() == 'pdf') + return data_dict["resource"].get("format", "").lower() == "pdf" def view_template(self, context, data_dict): - return 'pdf_view.html' + return "pdf_view.html" def form_template(self, context, data_dict): - return 'pdf_form.html' + return "pdf_form.html" diff --git a/ckanext/pdfview/tests/test_view.py b/ckanext/pdfview/tests/test_view.py index bc62b97..97f1e14 100644 --- a/ckanext/pdfview/tests/test_view.py +++ b/ckanext/pdfview/tests/test_view.py @@ -5,28 +5,33 @@ from ckan.plugins import toolkit -@pytest.mark.ckan_config('ckan.views.default_views', '') -@pytest.mark.ckan_config('ckan.plugins', 'pdf_view') -@pytest.mark.usefixtures('clean_db', 'with_plugins') +@pytest.mark.ckan_config("ckan.views.default_views", "") +@pytest.mark.ckan_config("ckan.plugins", "pdf_view") +@pytest.mark.usefixtures("clean_db", "with_plugins") def test_view_shown_on_resource_page_with_pdf_url(app): dataset = factories.Dataset() - resource = factories.Resource(package_id=dataset['id'], - format='pdf') + resource = factories.Resource(package_id=dataset["id"], format="pdf") resource_view = factories.ResourceView( - resource_id=resource['id'], - view_type='pdf_view', - pdf_url='https://example/document.pdf') + resource_id=resource["id"], + view_type="pdf_view", + pdf_url="https://example/document.pdf", + ) if toolkit.check_ckan_version("2.9"): - url = toolkit.url_for('{}_resource.read'.format(dataset['type']), - id=dataset['name'], resource_id=resource['id']) + url = toolkit.url_for( + "{}_resource.read".format(dataset["type"]), + id=dataset["name"], + resource_id=resource["id"], + ) else: - url = toolkit.url_for(controller='package', - action='resource_read', - id=resource_view['package_id'], - resource_id=resource['id']) + url = toolkit.url_for( + controller="package", + action="resource_read", + id=resource_view["package_id"], + resource_id=resource["id"], + ) response = app.get(url) - assert 'https://example/document.pdf' in response.body + assert "https://example/document.pdf" in response.body