from ckan.lib.helpers import is_url, url_for import ckan.plugins.toolkit as toolkit from ckan.controllers.package import PackageController from helpers import get_latest_resources_for_format, get_latest_dataset class LatestDatasetController(PackageController): def latest_dataset(self, id): latest_dataset= get_latest_dataset(id) if latest_dataset is None: toolkit.abort(404) toolkit.redirect_to(controller='package', action='read', id=latest_dataset) class LatestRecourcesController(PackageController): def latest_resource(self, id, resource_format): latest_resources = get_latest_resources_for_format(id, resource_format) if latest_resources is None: toolkit.abort(404) url_type = latest_resources.get('url_type') if url_type is None: resource_url = latest_resources.get('url') toolkit.redirect_to(resource_url) if url_type == 'upload': download_package_id = latest_resources.get('package_id') download_resource_id = latest_resources.get('id') pre_resource_url = latest_resources.get('url') if is_url(pre_resource_url): url_resource = pre_resource_url else: url_resource = url_for(controller='package', action='resource_download', id=download_package_id, resource_id=download_resource_id, filename=pre_resource_url, qualified = True) toolkit.redirect_to(url_resource) toolkit.abort(404)