From 5407174b7f93696fc955a5040a6d0880e3d0749a Mon Sep 17 00:00:00 2001
From: chbaeh <chbaeh@gmail.com>
Date: Tue, 9 Apr 2019 13:10:26 +0200
Subject: [PATCH] add preconditon for slave

---
 ckanext/odsh/plugin.py       |  9 +++------
 ckanext/odsh/precondition.py | 17 +++++++++++++++++
 2 files changed, 20 insertions(+), 6 deletions(-)
 create mode 100644 ckanext/odsh/precondition.py

diff --git a/ckanext/odsh/plugin.py b/ckanext/odsh/plugin.py
index 7519426b..67bce258 100644
--- a/ckanext/odsh/plugin.py
+++ b/ckanext/odsh/plugin.py
@@ -19,8 +19,8 @@ from dateutil.parser import parse
 import ckan.plugins as p
 
 import logging
-
 import validation
+import precondition
 
 log = logging.getLogger(__name__)
 
@@ -96,7 +96,7 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
     # IActions
 
     def get_actions(self):
-        return {'package_create': action.odsh_package_create,
+        return {'package_create': precondition.not_on_slave(action.odsh_package_create),
                 'user_create': action.odsh_user_create}
 
     # IConfigurer
@@ -332,11 +332,8 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
                     dict_pkg['openness']=OdshPlugin.scores[score-1]
 
 
+    @precondition.not_on_slave
     def before_index(self, dict_pkg):
-        debug = config.get('ckanext.odsh.debug',False)
-        slave = config.get('ckanext.odsh.slave',False)
-        assert not (debug and slave)
-
         # make special date fields solr conform
         fields = ["issued", "temporal_start", "temporal_end"]
         for field in fields:
diff --git a/ckanext/odsh/precondition.py b/ckanext/odsh/precondition.py
new file mode 100644
index 00000000..542c14fb
--- /dev/null
+++ b/ckanext/odsh/precondition.py
@@ -0,0 +1,17 @@
+from pylons import config
+
+
+class PreconditionViolated(Exception):
+    def __init__(self, message):
+        super(PreconditionViolated, self).__init__(message)
+
+
+def not_on_slave(func):
+    def wrapped(*args, **kwargs):
+        if config.get('ckanext.odsh.slave', False):
+            raise PreconditionViolated('not allowed on slave')
+        return func(*args, **kwargs)
+
+    if config.get('ckanext.odsh.debug', False):
+        return wrapped
+    return func
-- 
GitLab