diff --git a/ckanext/odsh/logic/__init__.py b/ckanext/odsh/logic/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/ckanext/odsh/logic/action.py b/ckanext/odsh/logic/action.py new file mode 100644 index 0000000000000000000000000000000000000000..b755a50fda117cc2ec32cfb93b1338582fe25c83 --- /dev/null +++ b/ckanext/odsh/logic/action.py @@ -0,0 +1,25 @@ +import logging +from ckan.logic.action.create import package_create +import ckan.model as model + +log = logging.getLogger(__name__) + + +def odsh_package_create(context, data_dict): + log.debug('in ODSH package_create') + munge_increment_name(data_dict) + return package_create(context, data_dict) + +def munge_increment_name(data_dict): + log.debug('IN MUNGE') + from ckan.lib.munge import munge_title_to_name + + name_base = name = munge_title_to_name(data_dict['title']) + pkg = model.Package.get(name) + i = 0 + while pkg: + i += 1 + name = name_base + str(i) + pkg = model.Package.get(name) + log.debug('name: %s' % name) + data_dict['name'] = name diff --git a/ckanext/odsh/plugin.py b/ckanext/odsh/plugin.py index c944fcf37445c7076424a53d8c39f555226fc6a4..780fdb4b8670c9df09e4acb05fa4a59ef2005577 100644 --- a/ckanext/odsh/plugin.py +++ b/ckanext/odsh/plugin.py @@ -11,6 +11,7 @@ import ckan.model as model from ckanext.odsh.lib.uploader import ODSHResourceUpload import ckan.lib.helpers as helpers import helpers as odsh_helpers +import ckanext.odsh.logic.action as action from itertools import count from routes.mapper import SubMapper @@ -298,6 +299,12 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm plugins.implements(plugins.IDatasetForm) plugins.implements(plugins.IValidators) plugins.implements(plugins.IPackageController, inherit=True) + plugins.implements(plugins.IActions) + + # IActions + + def get_actions(self): + return {'package_create': action.odsh_package_create} # IConfigurer