diff --git a/ckanext/odsh/helpers.py b/ckanext/odsh/helpers.py index efcb5fceb3e1a5d7e8658a4227e00e5ff3a52604..0baa72be57a524c65f8e14115b6471e102ca7bd9 100644 --- a/ckanext/odsh/helpers.py +++ b/ckanext/odsh/helpers.py @@ -492,3 +492,32 @@ def odsh_load_mdk_sample_dataset(): raise return result +def odsh_load_raw_mdk_sample_dataset(): + ''' + Load sample dataset (Musterkatalog/Musterdatensatz). + + See https://bertelsmannstift.github.io/Musterdatenkatalog/def/musterdatensatz.rdf + and corresponding mapping in mdk_mapping.json file. + ''' + + path = os.path.abspath(os.path.dirname(__file__)) + default_sample_data_file_path = os.path.join(path, "../../mdk_mapping.json") + sample_data_file_path = config.get( + 'ckanext.odsh.sample_data_file_path', default_sample_data_file_path) + + try: + with open(sample_data_file_path) as mapping_json: + result = json.loads(mapping_json.read(), object_pairs_hook=OrderedDict) + except IOError as err: + log.error( + 'Could not load sample dataset mapping file from {}' + .format(sample_data_file_path) + ) + raise + except ValueError as err: + log.error( + 'Could not convert sample dataset mapping file from json. \nSample dataset mapping file: {}' + .format(sample_data_file_path) + ) + raise + return result diff --git a/ckanext/odsh/plugin.py b/ckanext/odsh/plugin.py index 8bf494dcc5f8fb89f55263184fe4618d5c2b9610..e4791d41fcee6af771e9ca3ea6229a20a6028552 100644 --- a/ckanext/odsh/plugin.py +++ b/ckanext/odsh/plugin.py @@ -382,6 +382,7 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm 'tpsh_get_address_org':helpers_tpsh.get_address_org, 'tpsh_get_body_mail':helpers_tpsh.get_body_mail, 'odsh_load_mdk_sample_dataset': odsh_helpers.odsh_load_mdk_sample_dataset, + 'odsh_load_raw_mdk_sample_dataset': odsh_helpers.odsh_load_raw_mdk_sample_dataset, } diff --git a/ckanext/odsh/templates/package/read.html b/ckanext/odsh/templates/package/read.html index 91384f19b75ec30769ef925d0e13cd30d6458587..c90331b87ce61e949c9e757bbba8926781adaa09 100644 --- a/ckanext/odsh/templates/package/read.html +++ b/ckanext/odsh/templates/package/read.html @@ -4,7 +4,7 @@ {% set collection = h.get_collection(pkg) %} {% set collection_title = collection['title'] if collection else None %} {% set collection_url = collection['url'] if collection else None %} -{% set successor_url = collection['successor']['url'] if collection else None %} +{% set successor_url = collection['successor']['url'] if collection and 'successor' in collection else None %} {% set predecessor_url = collection['predecessor']['url'] if collection else None %} {% set latest_collection_member = collection['persistent_link_last_member'] if collection else None %} {% set stars = h.odsh_openness_score_dataset_html(pkg) %} diff --git a/ckanext/odsh/templates/package/snippets/info.html b/ckanext/odsh/templates/package/snippets/info.html index 167ec74d8efccd2624e126e827508a1d86a0de34..5e816662805b7c45e4e8ad1facdf22b03747860c 100644 --- a/ckanext/odsh/templates/package/snippets/info.html +++ b/ckanext/odsh/templates/package/snippets/info.html @@ -81,6 +81,18 @@ Example: </div> {% endblock license %} + {% block musterdatensatz %} + {% set musterdatensatzURI = h.odsh_extract_value_from_extras(pkg.extras,'reference') %} + {% if musterdatensatzURI %} + {% set mdk=h.odsh_load_raw_mdk_sample_dataset() %} + {% set musterdatensatzName = mdk[musterdatensatzURI] %} + <div class="musterdatensatz-detail info-detail"> + <div>Musterdatensatz:</div> + <a href="/dataset?reference={{ musterdatensatzURI }}">{{ musterdatensatzName }}</a> + </div> + {% endif %} + {% endblock musterdatensatz %} + {% endblock package_info_inner %} </div> {% set map_text = h.odsh_get_spatial_text(pkg) %} diff --git a/ckanext/odsh/tests/test_validation.py b/ckanext/odsh/tests/test_validation.py index b2edc40b15f6f2e6446a709c34706bb63ac3a3a2..01a9a779ac20d2ae74034ba4b73ae4cca4d16636 100644 --- a/ckanext/odsh/tests/test_validation.py +++ b/ckanext/odsh/tests/test_validation.py @@ -117,7 +117,7 @@ def test_convert_subjectID_to_subjectText(): data = {('extras', 0, 'subject'): 'subject', ('extras', 0, 'subject'): 'Test_id'} # act - convert_subjectID_to_subjectText('key', data, {}, None): + convert_subjectID_to_subjectText('key', data, {}, None) # assert assert data[('extras', 1, 'key')] == 'subject_text' assert data[('extras', 1, 'value')] == 'Test_subject' @@ -128,7 +128,7 @@ def test_exception_convert_subjectID_to_subjectText(): data = {('extras', 0, 'subject'): 'subject', ('extras', 0, 'subject'): 'Nicht_Vorhanden'} # act - convert_subjectID_to_subjectText('key', data, {}, None): + convert_subjectID_to_subjectText('key', data, {}, None) #assert assert data[('extras', 1, 'key')] == 'subject_text' assert data[('extras', 1, 'value')] == '' diff --git a/ckanext/odsh/validation.py b/ckanext/odsh/validation.py index d457fd8f6176890d9171e8a1c614656896d28f31..78a77924691819bbb89df383f15ab821ddc73548 100644 --- a/ckanext/odsh/validation.py +++ b/ckanext/odsh/validation.py @@ -66,9 +66,10 @@ def validate_extras(key, data, errors, context): isStaNord = ('id',) in data and data[('id',)][:7] == 'StaNord' isLVermGeo = ('owner_org',) in data and data[('owner_org',)] == '01115337-01d1-4e96-aa8e-9749524889c7' + isUmweltportal = ('owner_org',) in data and data[('owner_org',)] == '09871195-cd0a-4767-9396-276404c940d9' is_optional_temporal_start = toolkit.asbool( config.get('ckanext.odsh.is_optional_temporal_start', False) - ) or isStaNord or isLVermGeo + ) or isStaNord or isLVermGeo or isUmweltportal require_at_least_one_category = toolkit.asbool( config.get('ckanext.odsh.require_at_least_one_category', False) diff --git a/mdk_mapping.json b/mdk_mapping.json index 85077b17687d46b305a7a0dc7a042f9933bb8e01..671c0eff9409c694e55160dbca72a35bde21abc9 100644 --- a/mdk_mapping.json +++ b/mdk_mapping.json @@ -52,7 +52,7 @@ "https://musterdatenkatalog.de/def/musterdatensatz/externeInfrastruktur/coworkingSpaces":"Externe Infrastruktur - Coworking Spaces", "https://musterdatenkatalog.de/def/musterdatensatz/externeInfrastruktur/einkaufsfuehrer":"Externe Infrastruktur - Einkaufsführer", "https://musterdatenkatalog.de/def/musterdatensatz/externeInfrastruktur/einzelhandel":"Externe Infrastruktur - Einzelhandel", - "https://musterdatenkatalog.de/def/musterdatensatz/externeInfrastruktur/kirchenKappellenUndKloester":"Externe Infrastruktur - Kirchen, Kapellen und Klöster", + "https://musterdatenkatalog.de/def/musterdatensatz/externeInfrastruktur/kirchenKappellenUndKloester":"Externe Infrastruktur - Kirchen Kapellen Klöster", "https://musterdatenkatalog.de/def/musterdatensatz/externeInfrastruktur/maerkte":"Externe Infrastruktur - Märkte", "https://musterdatenkatalog.de/def/musterdatensatz/externeInfrastruktur/oeffnungszeiten":"Externe Infrastruktur - Öffnungszeiten", "https://musterdatenkatalog.de/def/musterdatensatz/externeInfrastruktur/polizei":"Externe Infrastruktur - Polizei", @@ -85,12 +85,12 @@ "https://musterdatenkatalog.de/def/musterdatensatz/gewaesser/pegelstaende":"Gewässer - Pegelstände", "https://musterdatenkatalog.de/def/musterdatensatz/gewaesser/wasserflaechen":"Gewässer - Wasserflächen", "https://musterdatenkatalog.de/def/musterdatensatz/gruenflaechen/ausgleichsflaechen":"Grünflächen - Ausgleichsflächen", - "https://musterdatenkatalog.de/def/musterdatensatz/gruenflaechen/baumbestandBaumkataster":"Grünflächen - Baumbestand/Baumkataster", + "https://musterdatenkatalog.de/def/musterdatensatz/gruenflaechen/baumbestandBaumkataster":"Grünflächen - Baumkataster", "https://musterdatenkatalog.de/def/musterdatensatz/gruenflaechen/baumfaellungen":"Grünflächen - Baumfällungen", "https://musterdatenkatalog.de/def/musterdatensatz/gruenflaechen/biotopflaechen":"Grünflächen - Biotopflächen", "https://musterdatenkatalog.de/def/musterdatensatz/gruenflaechen/blumenampeln":"Grünflächen - Blumenampeln", "https://musterdatenkatalog.de/def/musterdatensatz/gruenflaechen/brunnen":"Grünflächen - Brunnen", - "https://musterdatenkatalog.de/def/musterdatensatz/gruenflaechen/gruenflaechenGruenflaechenkataster":"Grünflächen - Grünflächen/Grünflächenkataster", + "https://musterdatenkatalog.de/def/musterdatensatz/gruenflaechen/gruenflaechenGruenflaechenkataster":"Grünflächen - Grünflächenkataster", "https://musterdatenkatalog.de/def/musterdatensatz/gruenflaechen/hundekottueten":"Grünflächen - Hundekottüten", "https://musterdatenkatalog.de/def/musterdatensatz/gruenflaechen/hundewiesen":"Grünflächen - Hundewiesen", "https://musterdatenkatalog.de/def/musterdatensatz/gruenflaechen/jagdbezirke":"Grünflächen - Jagdbezirke", @@ -265,7 +265,7 @@ "https://musterdatenkatalog.de/def/musterdatensatz/umweltschutz/nachhaltigkeit":"Umweltschutz - Nachhaltigkeit", "https://musterdatenkatalog.de/def/musterdatensatz/umweltschutz/trinkwasser":"Umweltschutz - Trinkwasser", "https://musterdatenkatalog.de/def/musterdatensatz/umweltschutz/umweltzonen":"Umweltschutz - Umweltzonen", - "https://musterdatenkatalog.de/def/musterdatensatz/vereineVerbaende/einrichtungen":"Vereine, Verbände - Einrichtungen", + "https://musterdatenkatalog.de/def/musterdatensatz/vereineVerbaende/einrichtungen":"Vereine und Verbände - Einrichtungen", "https://musterdatenkatalog.de/def/musterdatensatz/volkshochschulen/information":"Volkshochschulen - Information", "https://musterdatenkatalog.de/def/musterdatensatz/volkshochschulen/programm":"Volkshochschulen - Programm", "https://musterdatenkatalog.de/def/musterdatensatz/volkshochschulen/teilnehmer":"Volkshochschulen - Teilnehmer",