def package_create(context, data_dict): """ Creates a new dataset. Extends ckan's similar method to instantly reindex the SOLR index, so that this newly added package emerges in search results instantly instead of during the next timed reindexing. :param context: context :param data_dict: data dictionary (package data) :rtype: dictionary """ user = model.User.get(context['user']) if data_dict.get('type') == 'harvest' and not user.sysadmin: ckan.lib.base.abort(401, _('Unauthorized to add a harvest source')) if not user.name == "harvest": _remove_extras_from_data_dict(data_dict) data_dict = utils.dataset_to_resource(data_dict) if not user.name == 'harvest': _handle_package_id_on_create(data_dict) _handle_pids(data_dict) _add_ida_download_url(data_dict) if asbool(data_dict.get('private')) and not data_dict.get('persist_schema'): context['schema'] = Schemas.private_package_schema() data_dict.pop('persist_schema', False) if data_dict.get('type') == 'harvest': context['schema'] = Schemas.harvest_source_create_package_schema() pkg_dict1 = ckan.logic.action.create.package_create(context, data_dict) # Logging for production use _log_action('Package', 'create', context['user'], pkg_dict1['id']) context = {'model': model, 'ignore_auth': True, 'validate': False, 'extras_as_string': False} pkg_dict = ckan.logic.action.get.package_show(context, pkg_dict1) index = index_for('package') index.index_package(pkg_dict) return pkg_dict1
def package_create(context, data_dict): """ Creates a new dataset. Extends ckan's similar method to instantly reindex the SOLR index, so that this newly added package emerges in search results instantly instead of during the next timed reindexing. :param context: context :param data_dict: data dictionary (package data) :rtype: dictionary """ user = model.User.get(context['user']) if data_dict.get('type') == 'harvest' and not user.sysadmin: ckan.lib.base.abort(401, _('Unauthorized to add a harvest source')) data_dict = utils.dataset_to_resource(data_dict) _handle_pids(context, data_dict) _add_ida_download_url(context, data_dict) if asbool(data_dict.get('private')) and not data_dict.get('persist_schema'): context['schema'] = Schemas.private_package_schema() data_dict.pop('persist_schema', False) if data_dict.get('type') == 'harvest': context['schema'] = Schemas.harvest_source_create_package_schema() pkg_dict1 = ckan.logic.action.create.package_create(context, data_dict) # Logging for production use _log_action('Package', 'create', context['user'], pkg_dict1['id']) context = {'model': model, 'ignore_auth': True, 'validate': False, 'extras_as_string': False} pkg_dict = ckan.logic.action.get.package_show(context, pkg_dict1) index = index_for('package') index.index_package(pkg_dict) return pkg_dict1
def package_create(context, data_dict): """ Creates a new dataset. Extends ckan's similar method to instantly reindex the SOLR index, so that this newly added package emerges in search results instantly instead of during the next timed reindexing. :param context: context :param data_dict: data dictionary (package data) :rtype: dictionary """ user = model.User.get(context['user']) try: if data_dict['type'] == 'harvest' and not user.sysadmin: ckan.lib.base.abort(401, _('Unauthorized to add a harvest source')) except KeyError: log.debug("Tried to check the package type, but it wasn't present!") # TODO: JUHO: Dubious to let pass without checking user.sysadmin pass data_dict = utils.dataset_to_resource(data_dict) _handle_pids(context, data_dict) _add_ida_download_url(context, data_dict) if data_dict.get('type') == 'harvest': context['schema'] = Schemas.harvest_source_create_package_schema() pkg_dict1 = ckan.logic.action.create.package_create(context, data_dict) # Logging for production use _log_action('Package', 'create', context['user'], pkg_dict1['id']) context = {'model': model, 'ignore_auth': True, 'validate': False, 'extras_as_string': False} pkg_dict = ckan.logic.action.get.package_show(context, pkg_dict1) index = index_for('package') index.index_package(pkg_dict) return pkg_dict1