diff --git a/ckanext/odsh/plugin.py b/ckanext/odsh/plugin.py index 7519426b8ae49de7e1ebd95f19d0990b66d1305d..67bce258c81375ca1a830608aa4f2362e98f2de8 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 0000000000000000000000000000000000000000..542c14fbb564c7a9a4e0b65ed00072de0617482a --- /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