Skip to content
Snippets Groups Projects
Commit 7328bb20 authored by Thorge Petersen's avatar Thorge Petersen
Browse files

Fixed schema return and aligned with ckan documentation

parent 7f828030
No related branches found
No related tags found
1 merge request!52Added applicableLegislation and hvdCategory support
...@@ -3,12 +3,12 @@ from dateutil.parser import parse ...@@ -3,12 +3,12 @@ from dateutil.parser import parse
import json import json
import logging import logging
from collections import OrderedDict from collections import OrderedDict
from ckan.types import Schema
# imports from ckan # imports from ckan
from ckan.lib.plugins import DefaultTranslation, DefaultDatasetForm from ckan.lib.plugins import DefaultTranslation
from ckan.logic.validators import tag_string_convert import ckan.plugins as p
import ckan.plugins as plugins import ckan.plugins.toolkit as tk
import ckan.plugins.toolkit as toolkit
# imports from this extension # imports from this extension
import ckanext.odsh.helpers as helpers_odsh import ckanext.odsh.helpers as helpers_odsh
...@@ -28,20 +28,20 @@ from ckanext.odsh.views import feed ...@@ -28,20 +28,20 @@ from ckanext.odsh.views import feed
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
_ = toolkit._ _ = tk._
class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm): class OdshPlugin(p.SingletonPlugin, DefaultTranslation, tk.DefaultDatasetForm):
plugins.implements(plugins.IActions) p.implements(p.IActions)
plugins.implements(plugins.IConfigurer) p.implements(p.IConfigurer)
plugins.implements(plugins.IDatasetForm) p.implements(p.IDatasetForm)
plugins.implements(plugins.IFacets) p.implements(p.IFacets)
plugins.implements(plugins.IPackageController, inherit=True) p.implements(p.IPackageController, inherit=True)
plugins.implements(plugins.ITemplateHelpers) p.implements(p.ITemplateHelpers)
plugins.implements(plugins.ITranslation) p.implements(p.ITranslation)
plugins.implements(plugins.IValidators) p.implements(p.IValidators)
plugins.implements(plugins.IResourceController, inherit=True) p.implements(p.IResourceController, inherit=True)
plugins.implements(plugins.IBlueprint) p.implements(p.IBlueprint)
# IBlueprint # IBlueprint
def get_blueprint(self): def get_blueprint(self):
...@@ -58,7 +58,7 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm ...@@ -58,7 +58,7 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
bp_default.add_url_rule(*rule) bp_default.add_url_rule(*rule)
# DCAT # DCAT
# if toolkit.asbool(toolkit.config.get('ckanext.dcat.enable_rdf_endpoints', True)): # if tk.asbool(tk.config.get('ckanext.dcat.enable_rdf_endpoints', True)):
# helpers_odsh.odsh_remove_route(map, 'dcat_catalog') # helpers_odsh.odsh_remove_route(map, 'dcat_catalog')
# bp_default.add_url_rule('/catalog.<any("xml", "rdf", "n3", "ttl", "jsonld"):_format>', view_func=dcat_view.read_catalog, defaults={'_format': 'xml'}, methods=['GET']) # bp_default.add_url_rule('/catalog.<any("xml", "rdf", "n3", "ttl", "jsonld"):_format>', view_func=dcat_view.read_catalog, defaults={'_format': 'xml'}, methods=['GET'])
...@@ -108,9 +108,9 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm ...@@ -108,9 +108,9 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
# IConfigurer # IConfigurer
def update_config(self, config_): def update_config(self, config_):
toolkit.add_template_directory(config_, 'templates') tk.add_template_directory(config_, 'templates')
toolkit.add_public_directory(config_, 'public') tk.add_public_directory(config_, 'public')
toolkit.add_resource('assets', 'ckanext-odsh') tk.add_resource('assets', 'ckanext-odsh')
def after_map(self, map): def after_map(self, map):
return map return map
...@@ -125,115 +125,119 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm ...@@ -125,115 +125,119 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
# package types not handled by any other IDatasetForm plugin. # package types not handled by any other IDatasetForm plugin.
return True return True
def create_package_schema(self): def create_package_schema(self) -> Schema:
schema = super(OdshPlugin, self).create_package_schema() log.debug("OdshPlugin::create_package_schema")
self._update_schema(schema) schema: Schema = super(OdshPlugin, self).create_package_schema()
self._update_create_or_update_package_schema(schema) schema = self._update_schema(schema)
schema = self._update_create_or_update_package_schema(schema)
return schema return schema
def update_package_schema(self): def update_package_schema(self) -> Schema:
schema = super(OdshPlugin, self).update_package_schema() log.debug("OdshPlugin::update_package_schema")
self._update_schema(schema) schema: Schema = super(OdshPlugin, self).update_package_schema()
self._update_create_or_update_package_schema(schema) schema = self._update_schema(schema)
schema = self._update_create_or_update_package_schema(schema)
return schema return schema
def show_package_schema(self): def show_package_schema(self) -> Schema:
schema = super(OdshPlugin, self).show_package_schema() log.debug("OdshPlugin::show_package_schema")
self._update_show_package_schema(schema) schema: Schema = super(OdshPlugin, self).show_package_schema()
schema = self._update_show_package_schema(schema)
return schema return schema
def _update_schema(self, schema): def _update_schema(self, schema: Schema) -> Schema:
for field in ['title', 'license_id']: for field in ['title', 'license_id']:
schema.update({field: [toolkit.get_converter('not_empty')]}) schema.update({field: [tk.get_converter('not_empty')]})
for field in ['reference','applicableLegislation','hvdCategory', 'is_replaced_by', 'version_notes']: for field in ['reference','applicableLegislation','hvdCategory', 'is_replaced_by', 'version_notes']:
schema.update({ schema.update({
field: [ field: [
toolkit.get_validator('ignore_missing'), tk.get_validator('ignore_missing'),
toolkit.get_converter('convert_to_extras') tk.get_converter('convert_to_extras')
] ]
}) })
schema['resources'].update({ schema['resources'].update({
'url': [toolkit.get_converter('not_empty')], 'url': [tk.get_converter('not_empty')],
'format': [toolkit.get_converter('odsh_validate_format')], 'format': [tk.get_converter('odsh_validate_format')],
}) })
schema['extras'].update({ schema['extras'].update({
'key': [ 'key': [
toolkit.get_converter('known_spatial_uri'), tk.get_converter('known_spatial_uri'),
toolkit.get_converter('validate_licenseAttributionByText'), tk.get_converter('validate_licenseAttributionByText'),
] ]
}) })
schema.update( schema.update(
{'__extras': [toolkit.get_converter('odsh_validate_extras')]}) {'__extras': [tk.get_converter('odsh_validate_extras')]})
return schema
def _update_create_or_update_package_schema(self, schema): def _update_create_or_update_package_schema(self, schema: Schema) -> Schema:
schema.update({ schema.update({
'language': [ 'language': [
toolkit.get_validator('ignore_missing'), tk.get_validator('ignore_missing'),
toolkit.get_converter('convert_to_extras') tk.get_converter('convert_to_extras')
], ],
'thumbnail': [ 'thumbnail': [
toolkit.get_validator('ignore_missing'), tk.get_validator('ignore_missing'),
toolkit.get_converter('convert_to_extras') tk.get_converter('convert_to_extras')
], ],
'relatedPackage': [ 'relatedPackage': [
toolkit.get_validator('validate_relatedPackage'), tk.get_validator('validate_relatedPackage'),
toolkit.get_converter('convert_to_extras') tk.get_converter('convert_to_extras')
], ],
'accessibility': [ 'accessibility': [
toolkit.get_validator('ignore_missing'), tk.get_validator('ignore_missing'),
toolkit.get_converter('convert_to_extras') tk.get_converter('convert_to_extras')
], ],
'is_replaced_by': [ 'is_replaced_by': [
toolkit.get_validator('ignore_missing'), tk.get_validator('ignore_missing'),
toolkit.get_converter('convert_to_extras') tk.get_converter('convert_to_extras')
], ],
'version_notes': [ 'version_notes': [
toolkit.get_validator('ignore_missing'), tk.get_validator('ignore_missing'),
toolkit.get_converter('convert_to_extras') tk.get_converter('convert_to_extras')
], ],
}) })
return schema return schema
def _update_show_package_schema(self, schema): def _update_show_package_schema(self, schema: Schema) -> Schema:
schema.update({ schema.update({
'language': [ 'language': [
toolkit.get_converter('convert_from_extras'), tk.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing') tk.get_validator('ignore_missing')
], ],
'thumbnail': [ 'thumbnail': [
toolkit.get_converter('convert_from_extras'), tk.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing') tk.get_validator('ignore_missing')
], ],
'relatedPackage': [ 'relatedPackage': [
toolkit.get_converter('convert_from_extras'), tk.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing') tk.get_validator('ignore_missing')
], ],
'accessibility': [ 'accessibility': [
toolkit.get_converter('convert_from_extras'), tk.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing') tk.get_validator('ignore_missing')
], ],
'is_replaced_by': [ 'is_replaced_by': [
toolkit.get_converter('convert_from_extras'), tk.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing') tk.get_validator('ignore_missing')
], ],
'version_notes': [ 'version_notes': [
toolkit.get_converter('convert_from_extras'), tk.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing') tk.get_validator('ignore_missing')
], ],
'reference': [ 'reference': [
toolkit.get_converter('convert_from_extras'), tk.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing') tk.get_validator('ignore_missing')
], ],
'hvdCategory': [ 'hvdCategory': [
toolkit.get_converter('convert_from_extras'), tk.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing') tk.get_validator('ignore_missing')
], ],
'applicableLegislation': [ 'applicableLegislation': [
toolkit.get_converter('convert_from_extras'), tk.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing') tk.get_validator('ignore_missing')
], ],
}) })
return schema return schema
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment