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

Wip

parent 7f64ba93
No related branches found
No related tags found
1 merge request!52Added applicableLegislation and hvdCategory support
......@@ -223,6 +223,18 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
toolkit.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing')
],
'reference': [
toolkit.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing')
],
'hvdCategory': [
toolkit.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing')
],
'applicableLegislation': [
toolkit.get_converter('convert_from_extras'),
toolkit.get_validator('ignore_missing')
],
})
return schema
......
......@@ -11,10 +11,11 @@ from ckanext.dcatde.profiles import DCATdeProfile, DCATDE, DCAT, DCATDE_1_0, DCA
import ckanext.odsh.helpers as helpers_odsh
import ckanext.odsh.collection.helpers as helpers_collection
import ast
DCT = rdflib.namespace.Namespace("http://purl.org/dc/terms/")
DCAT = rdflib.namespace.Namespace("http://www.w3.org/ns/dcat#")
DCATAP = rdflib.namespace.Namespace("http://data.europa.eu/r5r/")
DCATDE_1_0_2 = rdflib.namespace.Namespace("http://dcat-ap.de/def/dcatde/1.0.2/")
ADMS = rdflib.namespace.Namespace("http://www.w3.org/ns/adms#")
......@@ -94,8 +95,8 @@ class ODSHDCATdeProfile(DCATdeProfile):
self._add_type(dataset_dict, dataset_ref)
self._add_modified_and_issued(dataset_dict, dataset_ref)
self._add_extra_field(dataset_dict, dataset_ref, 'reference', DCT.references)
self._add_extra_field(dataset_dict, dataset_ref, 'applicableLegislation', DCAT.applicableLegislation)
self._add_extra_field(dataset_dict, dataset_ref, 'hvdCategory', DCAT.hvdCategory)
self._add_extra_field(dataset_dict, dataset_ref, 'applicableLegislation', DCATAP.applicableLegislation)
self._add_extra_field(dataset_dict, dataset_ref, 'hvdCategory', DCATAP.hvdCategory)
self._add_version(dataset_dict, dataset_ref)
if self._is_dataset_collection(dataset_dict):
self._remove_predefined_collection_members()
......@@ -126,10 +127,26 @@ class ODSHDCATdeProfile(DCATdeProfile):
)
def _add_extra_field(self, dataset_dict, dataset_ref, field_name, dcat_property):
uri = helpers_odsh.odsh_extract_value_from_extras(dataset_dict.get('extras'), field_name)
if uri:
field_value_str = helpers_odsh.odsh_extract_value_from_extras(dataset_dict.get('extras'), field_name)
try:
# Attempt to parse the string as a Python literal
field_value = ast.literal_eval(field_value_str)
if not isinstance(field_value, set):
# If it's not a set, treat it as a single value
raise ValueError("Not a set")
except (ValueError, SyntaxError):
# If parsing fails, treat the entire string as a single value
field_value = field_value_str
if isinstance(field_value, set):
for value in field_value:
self.g.set(
(dataset_ref, dcat_property, rdflib.URIRef(value))
)
else:
self.g.set(
(dataset_ref, dcat_property, rdflib.URIRef(uri))
(dataset_ref, dcat_property, rdflib.URIRef(field_value))
)
......
{
"https://example.com/example1/":"Example 1",
"https://example.com/example2/":"Example 2",
"https://example.com/example3/":"Example 3",
"https://example.com/example4/":"Example 4"
"http://data.europa.eu/eli/reg_impl/2023/138/oj": "Durchführungsverordnung (EU) 2023/138 der Kommission vom 21. Dezember 2022 zur Festlegung bestimmter hochwertiger Datensätze und der Modalitäten ihrer Veröffentlichung und Weiterverwendung",
"http: //data.europa.eu/eli/dir/2007/2/2019-06-26": "Richtlinie 2007/2/EG des Europäischen Parlaments und des Rates vom 14. März 2007 zur Schaffung einer Geodateninfrastruktur in der Europäischen Gemeinschaft (INSPIRE)"
}
\ No newline at end of file
{
"https://example.com/category1/":"Category 1",
"https://example.com/category2/":"Category 2",
"https://example.com/category3/":"Category 3",
"https://example.com/category4/":"Category 4"
"https://example.com/category1/": "Georaum",
"https://example.com/category2/": "Erdbeobachtung und Umwelt",
"https://example.com/category3/": "Meteorologie",
"https://example.com/category4/": "Statistik",
"https://example.com/category5/": "Unternehmen und Eigentümerschaft von Unternehmen",
"https://example.com/category6/": "Mobilität"
}
\ No newline at end of file
......@@ -165,7 +165,7 @@ is_required=false) %}
{# Creates a select with an input field for autocomplete #}
{% macro select_autocomplete(name, id='', label='', options='', selected='', error='', classes=[], attrs={},
is_required=false, is_multiple=false, is_extra=false, index=0) %}
is_required=false, is_multiple=false) %}
{% set classes = classes|default([]) + ['control-select'] %}
{%- set extra_html = caller() if caller -%}
......@@ -173,10 +173,7 @@ is_required=false) %}
<div class="row-fluid">
<div class="span6">
{% if is_extra %}
<input id="field-{{ name }}-key" type="hidden" name="extras__{{ index }}__key" value="{{ id or name }}" />
{% endif %}
<select id="{{ 'field-' ~ (id or name) ~ '-value' if is_extra else (id or name) }}" name="{{ 'extras__' ~ index ~ '__value' if is_extra else (name) }}"
<select id="{{ (id or name) }}" name="{{ name }}"
{{ attributes(attrs) }} data-module="autocomplete"{% if is_multiple %} multiple{% endif %}>
{% for option in options %}
{% if option.key %}
......
......@@ -340,19 +340,19 @@ dataset_is_draft)) %}
{# field reference #}
{% set field = 'reference' %}
{% set error_reference = h.odsh_extract_error(field, errors) %}
{% set value = h.odsh_extract_value_from_extras(data.extras,field) or '' %}
{% set value = data.get(field) or '' %}
{{ form.select_autocomplete(field, label=_('Sample Dataset'), selected=value, options=h.odsh_load_mdk_sample_dataset(), error=error_reference, is_required=False, classes=['control-full', 'field-reference'])}}
{# field applicableLegislation #}
{% set field = 'applicableLegislation' %}
{% set error_reference = h.odsh_extract_error(field, errors) %}
{% set value = h.odsh_extract_value_from_extras(data.extras,field) or '' %}
{% set value = data.get(field) or '' %}
{{ form.select_autocomplete(field, label=_('Applicable Legislation'), selected=value, options=h.odsh_load_applicable_legislations(), error=error_reference, is_required=False, classes=['control-full', 'field-applicableLegislation'], is_multiple=True, is_extra=True, index=5)}}
{# field hvdCategory #}
{% set field = 'hvdCategory' %}
{% set error_reference = h.odsh_extract_error(field, errors) %}
{% set value = h.odsh_extract_value_from_extras(data.extras,field) or '' %}
{% set value = data.get(field) or '' %}
{{ form.select_autocomplete(field, label=_('HVD Category'), selected=value, options=h.odsh_load_hvd_categories(), error=error_reference, is_required=False, classes=['control-full', 'field-hvdCategory'], is_multiple=True, is_extra=True, index=6)}}
{% block scripts %}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment