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
import json
import logging
from collections import OrderedDict
from ckan.types import Schema
# imports from ckan
from ckan.lib.plugins import DefaultTranslation, DefaultDatasetForm
from ckan.logic.validators import tag_string_convert
import ckan.plugins as plugins
import ckan.plugins.toolkit as toolkit
from ckan.lib.plugins import DefaultTranslation
import ckan.plugins as p
import ckan.plugins.toolkit as tk
# imports from this extension
import ckanext.odsh.helpers as helpers_odsh
......@@ -28,20 +28,20 @@ from ckanext.odsh.views import feed
log = logging.getLogger(__name__)
_ = toolkit._
_ = tk._
class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm):
plugins.implements(plugins.IActions)
plugins.implements(plugins.IConfigurer)
plugins.implements(plugins.IDatasetForm)
plugins.implements(plugins.IFacets)
plugins.implements(plugins.IPackageController, inherit=True)
plugins.implements(plugins.ITemplateHelpers)
plugins.implements(plugins.ITranslation)
plugins.implements(plugins.IValidators)
plugins.implements(plugins.IResourceController, inherit=True)
plugins.implements(plugins.IBlueprint)
class OdshPlugin(p.SingletonPlugin, DefaultTranslation, tk.DefaultDatasetForm):
p.implements(p.IActions)
p.implements(p.IConfigurer)
p.implements(p.IDatasetForm)
p.implements(p.IFacets)
p.implements(p.IPackageController, inherit=True)
p.implements(p.ITemplateHelpers)
p.implements(p.ITranslation)
p.implements(p.IValidators)
p.implements(p.IResourceController, inherit=True)
p.implements(p.IBlueprint)
# IBlueprint
def get_blueprint(self):
......@@ -58,7 +58,7 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
bp_default.add_url_rule(*rule)
# 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')
# 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
# IConfigurer
def update_config(self, config_):
toolkit.add_template_directory(config_, 'templates')
toolkit.add_public_directory(config_, 'public')
toolkit.add_resource('assets', 'ckanext-odsh')
tk.add_template_directory(config_, 'templates')
tk.add_public_directory(config_, 'public')
tk.add_resource('assets', 'ckanext-odsh')
def after_map(self, map):
return map
......@@ -125,115 +125,119 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
# package types not handled by any other IDatasetForm plugin.
return True
def create_package_schema(self):
schema = super(OdshPlugin, self).create_package_schema()
self._update_schema(schema)
self._update_create_or_update_package_schema(schema)
def create_package_schema(self) -> Schema:
log.debug("OdshPlugin::create_package_schema")
schema: Schema = super(OdshPlugin, self).create_package_schema()
schema = self._update_schema(schema)
schema = self._update_create_or_update_package_schema(schema)
return schema
def update_package_schema(self):
schema = super(OdshPlugin, self).update_package_schema()
self._update_schema(schema)
self._update_create_or_update_package_schema(schema)
def update_package_schema(self) -> Schema:
log.debug("OdshPlugin::update_package_schema")
schema: Schema = super(OdshPlugin, self).update_package_schema()
schema = self._update_schema(schema)
schema = self._update_create_or_update_package_schema(schema)
return schema
def show_package_schema(self):
schema = super(OdshPlugin, self).show_package_schema()
self._update_show_package_schema(schema)
def show_package_schema(self) -> Schema:
log.debug("OdshPlugin::show_package_schema")
schema: Schema = super(OdshPlugin, self).show_package_schema()
schema = self._update_show_package_schema(schema)
return schema
def _update_schema(self, schema):
def _update_schema(self, schema: Schema) -> Schema:
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']:
schema.update({
field: [
toolkit.get_validator('ignore_missing'),
toolkit.get_converter('convert_to_extras')
tk.get_validator('ignore_missing'),
tk.get_converter('convert_to_extras')
]
})
schema['resources'].update({
'url': [toolkit.get_converter('not_empty')],
'format': [toolkit.get_converter('odsh_validate_format')],
'url': [tk.get_converter('not_empty')],
'format': [tk.get_converter('odsh_validate_format')],
})
schema['extras'].update({
'key': [
toolkit.get_converter('known_spatial_uri'),
toolkit.get_converter('validate_licenseAttributionByText'),
tk.get_converter('known_spatial_uri'),
tk.get_converter('validate_licenseAttributionByText'),
]
})
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({
'language': [
toolkit.get_validator('ignore_missing'),
toolkit.get_converter('convert_to_extras')
tk.get_validator('ignore_missing'),
tk.get_converter('convert_to_extras')
],
'thumbnail': [
toolkit.get_validator('ignore_missing'),
toolkit.get_converter('convert_to_extras')
tk.get_validator('ignore_missing'),
tk.get_converter('convert_to_extras')
],
'relatedPackage': [
toolkit.get_validator('validate_relatedPackage'),
toolkit.get_converter('convert_to_extras')
tk.get_validator('validate_relatedPackage'),
tk.get_converter('convert_to_extras')
],
'accessibility': [
toolkit.get_validator('ignore_missing'),
toolkit.get_converter('convert_to_extras')
tk.get_validator('ignore_missing'),
tk.get_converter('convert_to_extras')
],
'is_replaced_by': [
toolkit.get_validator('ignore_missing'),
toolkit.get_converter('convert_to_extras')
tk.get_validator('ignore_missing'),
tk.get_converter('convert_to_extras')
],
'version_notes': [
toolkit.get_validator('ignore_missing'),
toolkit.get_converter('convert_to_extras')
tk.get_validator('ignore_missing'),
tk.get_converter('convert_to_extras')
],
})
return schema
def _update_show_package_schema(self, schema):
def _update_show_package_schema(self, schema: Schema) -> Schema:
schema.update({
'language': [
toolkit.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing')
tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_missing')
],
'thumbnail': [
toolkit.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing')
tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_missing')
],
'relatedPackage': [
toolkit.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing')
tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_missing')
],
'accessibility': [
toolkit.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing')
tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_missing')
],
'is_replaced_by': [
toolkit.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing')
tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_missing')
],
'version_notes': [
toolkit.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing')
tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_missing')
],
'reference': [
toolkit.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing')
tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_missing')
],
'hvdCategory': [
toolkit.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing')
tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_missing')
],
'applicableLegislation': [
toolkit.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing')
tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_missing')
],
})
return schema
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment