From 0c34c257c08366a4a752849604dea480a8c09a58 Mon Sep 17 00:00:00 2001
From: Thorge Petersen <petersen@rz.uni-kiel.de>
Date: Fri, 20 Sep 2024 10:43:39 +0200
Subject: [PATCH] Refactored views and blueprint loading

---
 ckanext/odsh/plugin.py        | 46 +++++------------------------------
 ckanext/odsh/views/default.py | 11 +++++++++
 ckanext/odsh/views/feed.py    |  5 ++++
 ckanext/odsh/views/harvest.py |  8 ++++++
 ckanext/odsh/views/user.py    |  7 ++++++
 5 files changed, 37 insertions(+), 40 deletions(-)

diff --git a/ckanext/odsh/plugin.py b/ckanext/odsh/plugin.py
index 9ca9f663..c368451e 100644
--- a/ckanext/odsh/plugin.py
+++ b/ckanext/odsh/plugin.py
@@ -46,46 +46,12 @@ class OdshPlugin(p.SingletonPlugin, DefaultTranslation, tk.DefaultDatasetForm):
     def get_blueprint(self):
         log.debug("OdshPlugin::get_blueprint")
 
-        # Default
-        bp_default = default.blueprint
-        rules = [
-            ('/info_page', 'info_page', default.info_page),
-            ('/home', 'start', default.start),
-            ('/robots.txt', 'robots_txt', default.robots_txt),
-            ('/not_found', 'not_found', default.not_found), ]
-        for rule in rules:
-            bp_default.add_url_rule(*rule)
-
-        # DCAT
-        # 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'])
-
-        # Package
-        # bp_package = package.blueprint
-        # rules = [
-        #     ('/dataset/<id>/resource/<resource_id>', 'redirect_dataset_resource', package.redirect_dataset_resource), ]
-        # for rule in rules:
-        #     bp_package.add_url_rule(*rule)
-
-        # User
-        bp_user = user.blueprint
-        bp_user.add_url_rule(u'/user', endpoint='user_index',
-                             view_func=user.index, strict_slashes=False)
-        # bp_user.add_url_rule(u'/user/register', view_func=user.register)
-
-        # Harvest
-        bp_harvest = harvest.blueprint
-        bp_harvest.add_url_rule(u'/harvest', view_func=harvest.search, strict_slashes=False)
-        bp_harvest.add_url_rule(u'/harvest/new', view_func=harvest.new)
-        bp_harvest.add_url_rule(u'/harvest/<id>', view_func=harvest.read)
-        bp_harvest.add_url_rule(u'/harvest/about/<id>', view_func=harvest.about)
-
-        # Feed
-        bp_feed = feed.blueprint
-        bp_feed.add_url_rule(u'/feeds/custom.atom', methods=[u'GET'], view_func=feed.custom)
-
-        return [bp_default, bp_user, bp_harvest, bp_feed] # bp_package
+        bp_default = default.get_blueprint()
+        bp_user = user.get_blueprint()
+        bp_harvest = harvest.get_blueprint()
+        bp_feed = feed.get_blueprint()
+
+        return [bp_default, bp_user, bp_harvest, bp_feed]
 
     # IActions
 
diff --git a/ckanext/odsh/views/default.py b/ckanext/odsh/views/default.py
index 61333f69..f1d846d9 100644
--- a/ckanext/odsh/views/default.py
+++ b/ckanext/odsh/views/default.py
@@ -24,3 +24,14 @@ def robots_txt():
     resp = make_response(base.render('home/robots.txt'))
     resp.headers['Content-Type'] = "text/plain; charset=utf-8"
     return resp
+
+rules = [
+    ('/info_page', 'info_page', info_page),
+    ('/home', 'start', start),
+    ('/robots.txt', 'robots_txt', robots_txt),
+    ('/not_found', 'not_found', not_found), ]
+for rule in rules:
+    blueprint.add_url_rule(*rule)
+
+def get_blueprint():
+    return blueprint
\ No newline at end of file
diff --git a/ckanext/odsh/views/feed.py b/ckanext/odsh/views/feed.py
index 2305e2f3..e438830a 100644
--- a/ckanext/odsh/views/feed.py
+++ b/ckanext/odsh/views/feed.py
@@ -65,3 +65,8 @@ def custom():
                           feed_guid=ckan_feed._create_atom_id(atom_url),
                           feed_url=feed_url,
                           navigation_urls=navigation_urls)
+
+blueprint.add_url_rule(u'/feeds/custom.atom', methods=[u'GET'], view_func=custom)
+
+def get_blueprint():
+    return blueprint
\ No newline at end of file
diff --git a/ckanext/odsh/views/harvest.py b/ckanext/odsh/views/harvest.py
index c9c3d788..3f33337b 100644
--- a/ckanext/odsh/views/harvest.py
+++ b/ckanext/odsh/views/harvest.py
@@ -40,3 +40,11 @@ def about(id):
     if not is_sysadmin:
         toolkit.abort(403)
     return dataset.about(id)
+
+blueprint.add_url_rule(u'/harvest', view_func=search, strict_slashes=False)
+blueprint.add_url_rule(u'/harvest/new', view_func=new)
+blueprint.add_url_rule(u'/harvest/<id>', view_func=read)
+blueprint.add_url_rule(u'/harvest/about/<id>', view_func=about)
+
+def get_blueprint():
+    return blueprint
\ No newline at end of file
diff --git a/ckanext/odsh/views/user.py b/ckanext/odsh/views/user.py
index 7963a52e..e55338bd 100644
--- a/ckanext/odsh/views/user.py
+++ b/ckanext/odsh/views/user.py
@@ -33,3 +33,10 @@ def read(id=None):
     if not g.user:
         return ckan_user_view.login()
     return ckan_user_view.read(id)
+
+blueprint.add_url_rule(u'/user', endpoint='user_index',
+                             view_func=index, strict_slashes=False)
+# blueprint.add_url_rule(u'/user/register', view_func=user.register)
+
+def get_blueprint():
+    return blueprint
\ No newline at end of file
-- 
GitLab