From 560da12abbe6f48222527cbfcf8fc7c6a1a99543 Mon Sep 17 00:00:00 2001 From: blagoja Date: Mon, 19 Feb 2024 17:10:16 +0100 Subject: [PATCH 1/9] Update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index ee7cb38c..52b988f0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,4 @@ ckantoolkit>=0.0.3 frictionless==5.0.0b9 markupsafe==2.0.1 tableschema --e git+https://github.com/ckan/ckanext-scheming.git#egg=ckanext-scheming +Jinja2==3.0.3 From 0e2b5a10745edaa693586608eeaef372a42250ac Mon Sep 17 00:00:00 2001 From: blagoja Date: Fri, 23 Feb 2024 11:40:09 +0100 Subject: [PATCH 2/9] Change MANIFEST.in --- MANIFEST.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MANIFEST.in b/MANIFEST.in index cbb4ca17..9adfb179 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,4 +1,4 @@ include README.rst include LICENSE include requirements.txt -recursive-include ckanext/validation *.html *.json *.js *.less *.css *.mo \ No newline at end of file +recursive-include ckanext/validation *.html *.json *.js *.less *.css *.mo *.yml *.config *.png *.jpeg *.svg *.po *.pot *.jpg *.map *.eot *.svg *.ttf *.woff *.woff2 *.yaml From 0eb829a443cf97e4a6760a20bc3f9f0972cb116d Mon Sep 17 00:00:00 2001 From: blagoja Date: Thu, 29 Feb 2024 19:28:20 +0100 Subject: [PATCH 3/9] Update plugins to comply CKAN 2.9 and 2.10 --- ckanext/validation/logic.py | 41 +++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/ckanext/validation/logic.py b/ckanext/validation/logic.py index 213e4648..8bc6d31b 100644 --- a/ckanext/validation/logic.py +++ b/ckanext/validation/logic.py @@ -24,6 +24,8 @@ log = logging.getLogger(__name__) +ckan_2_10 = t.check_ckan_version(min_version="2.10") + def enqueue_job(*args, **kwargs): try: @@ -448,9 +450,14 @@ def resource_create(up_func, context, data_dict): {'id': package_id}) t.check_access('resource_create', context, data_dict) - - for plugin in plugins.PluginImplementations(plugins.IResourceController): - plugin.before_create(context, data_dict) + + # Check if CKAN version is min 2.10 + if ckan_2_10: + for plugin in plugins.PluginImplementations(plugins.IResourceController): + plugin.before_resource_create(context, data_dict) + else: + for plugin in plugins.PluginImplementations(plugins.IResourceController): + plugin.before_create(context, data_dict) if 'resources' not in pkg_dict: pkg_dict['resources'] = [] @@ -519,9 +526,13 @@ def resource_create(up_func, context, data_dict): {'resource': resource, 'package': updated_pkg_dict }) - - for plugin in plugins.PluginImplementations(plugins.IResourceController): - plugin.after_create(context, resource) + + if ckan_2_10: + for plugin in plugins.PluginImplementations(plugins.IResourceController): + plugin.after_resource_create(context, resource) + else: + for plugin in plugins.PluginImplementations(plugins.IResourceController): + plugin.after_create(context, resource) return resource @@ -575,9 +586,13 @@ def resource_update(up_func, context, data_dict): if ('datastore_active' in resource.extras and 'datastore_active' not in data_dict): data_dict['datastore_active'] = resource.extras['datastore_active'] - - for plugin in plugins.PluginImplementations(plugins.IResourceController): - plugin.before_update(context, pkg_dict['resources'][n], data_dict) + + if ckan_2_10: + for plugin in plugins.PluginImplementations(plugins.IResourceController): + plugin.before_resource_update(context, pkg_dict['resources'][n], data_dict) + else: + for plugin in plugins.PluginImplementations(plugins.IResourceController): + plugin.before_update(context, pkg_dict['resources'][n], data_dict) upload = uploader.get_resource_uploader(data_dict) @@ -636,8 +651,12 @@ def resource_update(up_func, context, data_dict): {'package': updated_pkg_dict, 'resource': resource}) - for plugin in plugins.PluginImplementations(plugins.IResourceController): - plugin.after_update(context, resource) + if ckan_2_10: + for plugin in plugins.PluginImplementations(plugins.IResourceController): + plugin.after_resource_update(context, resource) + else: + for plugin in plugins.PluginImplementations(plugins.IResourceController): + plugin.after_update(context, resource) return resource From 9f31e796eacacf43cf23876af752bf08aba823e9 Mon Sep 17 00:00:00 2001 From: blagoja Date: Fri, 29 Mar 2024 15:15:40 +0100 Subject: [PATCH 4/9] Add CKAN 2.10 compatable fucntions in plugin --- ckanext/validation/plugin/__init__.py | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/ckanext/validation/plugin/__init__.py b/ckanext/validation/plugin/__init__.py index d648709e..2b6efeea 100644 --- a/ckanext/validation/plugin/__init__.py +++ b/ckanext/validation/plugin/__init__.py @@ -41,6 +41,8 @@ ALLOWED_UPLOAD_TYPES = (cgi.FieldStorage, FlaskFileStorage) log = logging.getLogger(__name__) +ckan_2_10 = t.check_ckan_version(min_version="2.10") + class ValidationPlugin(p.SingletonPlugin): p.implements(p.IConfigurer) @@ -153,12 +155,19 @@ def _process_schema_fields(self, data_dict): return data_dict - def before_create(self, context, data_dict): + if ckan_2_10: + def before_resource_create(self, context, data_dict): - is_dataset = self._data_dict_is_dataset(data_dict) - if not is_dataset: context["_resource_create_call"] = True return self._process_schema_fields(data_dict) + + else: + def before_create(self, context, data_dict): + + is_dataset = self._data_dict_is_dataset(data_dict) + if not is_dataset: + context["_resource_create_call"] = True + return self._process_schema_fields(data_dict) def after_create(self, context, data_dict): @@ -302,6 +311,18 @@ def after_update(self, context, data_dict): del self.resources_to_validate[resource_id] _run_async_validation(resource_id) + + if ckan_2_10: + + def after_dataset_create(self, context, data_dict): + self.after_create(context, data_dict) + + def before_resource_update(self, context, current_resource, updated_resource): + self.before_update(context, current_resource, updated_resource) + + def after_dataset_update(self, context, data_dict): + self.after_update(context, data_dict) + # IPackageController From 267da301deb64444f7e0b8587907b032e0340538 Mon Sep 17 00:00:00 2001 From: blagoja Date: Mon, 1 Apr 2024 07:56:36 +0200 Subject: [PATCH 5/9] Change solr image --- .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 c1b0bf37..2dfd9527 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -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:2.9-solr9 postgres: image: ckan/ckan-postgres-dev:${{ matrix.ckan-version }} env: From 4ef316250ab2ca850ef198fccaa205bd1d18c3bb Mon Sep 17 00:00:00 2001 From: blagoja Date: Thu, 6 Jun 2024 16:10:09 +0200 Subject: [PATCH 6/9] Update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 52b988f0..ee7cb38c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,4 @@ ckantoolkit>=0.0.3 frictionless==5.0.0b9 markupsafe==2.0.1 tableschema -Jinja2==3.0.3 +-e git+https://github.com/ckan/ckanext-scheming.git#egg=ckanext-scheming From 919bbe8f3f7b32f3060d41313933d0b705b4d48e Mon Sep 17 00:00:00 2001 From: blagoja Date: Thu, 6 Jun 2024 16:16:17 +0200 Subject: [PATCH 7/9] Revert changes to tests and MANIFEST.in --- .github/workflows/test.yml | 2 +- MANIFEST.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2dfd9527..c1b0bf37 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,7 +26,7 @@ jobs: image: openknowledge/ckan-dev:${{ matrix.ckan-version }} services: solr: - image: ckan/ckan-solr:2.9-solr9 + image: ckan/ckan-solr-dev:${{ matrix.ckan-version }} postgres: image: ckan/ckan-postgres-dev:${{ matrix.ckan-version }} env: diff --git a/MANIFEST.in b/MANIFEST.in index 9adfb179..c826131c 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,4 +1,4 @@ include README.rst include LICENSE include requirements.txt -recursive-include ckanext/validation *.html *.json *.js *.less *.css *.mo *.yml *.config *.png *.jpeg *.svg *.po *.pot *.jpg *.map *.eot *.svg *.ttf *.woff *.woff2 *.yaml +recursive-include ckanext/validation *.html *.json *.js *.less *.css *.mo From 5f4cbb1ab919245fa43a5ebc4dd4cc5e79f3bc67 Mon Sep 17 00:00:00 2001 From: blagoja Date: Fri, 7 Jun 2024 09:46:56 +0200 Subject: [PATCH 8/9] Improve before_create function --- ckanext/validation/plugin/__init__.py | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/ckanext/validation/plugin/__init__.py b/ckanext/validation/plugin/__init__.py index 2b6efeea..d6dbd39b 100644 --- a/ckanext/validation/plugin/__init__.py +++ b/ckanext/validation/plugin/__init__.py @@ -155,19 +155,15 @@ def _process_schema_fields(self, data_dict): return data_dict - if ckan_2_10: - def before_resource_create(self, context, data_dict): + def before_resource_create(self, context, data_dict): - context["_resource_create_call"] = True - return self._process_schema_fields(data_dict) + context["_resource_create_call"] = True + return self._process_schema_fields(data_dict) - else: - def before_create(self, context, data_dict): + def before_create(self, context, data_dict): - is_dataset = self._data_dict_is_dataset(data_dict) - if not is_dataset: - context["_resource_create_call"] = True - return self._process_schema_fields(data_dict) + if not self._data_dict_is_dataset(data_dict): + return self.before_resource_create(context, data_dict) def after_create(self, context, data_dict): From 15f47acc5969d89ece2228715cc5bd5b66a7bd19 Mon Sep 17 00:00:00 2001 From: blagoja Date: Thu, 13 Jun 2024 16:21:12 +0200 Subject: [PATCH 9/9] Remove CKAN 2.10 condition check --- ckanext/validation/plugin/__init__.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/ckanext/validation/plugin/__init__.py b/ckanext/validation/plugin/__init__.py index d6dbd39b..a3bc978e 100644 --- a/ckanext/validation/plugin/__init__.py +++ b/ckanext/validation/plugin/__init__.py @@ -307,17 +307,15 @@ def after_update(self, context, data_dict): del self.resources_to_validate[resource_id] _run_async_validation(resource_id) + + def after_dataset_create(self, context, data_dict): + self.after_create(context, data_dict) - if ckan_2_10: - - def after_dataset_create(self, context, data_dict): - self.after_create(context, data_dict) - - def before_resource_update(self, context, current_resource, updated_resource): - self.before_update(context, current_resource, updated_resource) + def before_resource_update(self, context, current_resource, updated_resource): + self.before_update(context, current_resource, updated_resource) - def after_dataset_update(self, context, data_dict): - self.after_update(context, data_dict) + def after_dataset_update(self, context, data_dict): + self.after_update(context, data_dict) # IPackageController