From 8a5c84fa98e6c43912d4983571db7454b675447d Mon Sep 17 00:00:00 2001
From: Jesper Zedlitz <jesper@zedlitz.de>
Date: Tue, 9 Aug 2022 13:28:16 +0200
Subject: [PATCH] Hinweis auf Musterdatensatz in den Metadaten

closes #40
---
 ckanext/odsh/helpers.py                       | 29 +++++++++++++++++++
 ckanext/odsh/plugin.py                        |  1 +
 .../odsh/templates/package/snippets/info.html | 12 ++++++++
 3 files changed, 42 insertions(+)

diff --git a/ckanext/odsh/helpers.py b/ckanext/odsh/helpers.py
index efcb5fce..0baa72be 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 8bf494dc..e4791d41 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/snippets/info.html b/ckanext/odsh/templates/package/snippets/info.html
index 167ec74d..5e816662 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) %}
-- 
GitLab