Skip to content
Snippets Groups Projects
Commit 9652442f authored by Thorge Petersen's avatar Thorge Petersen
Browse files

Started with pylons to flask migration of collection

parent 6202c27a
Branches
Tags
2 merge requests!41Version 2.0.0,!38Merge py3 into dev
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='dataset',
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='dataset',
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)
......@@ -154,12 +154,7 @@ def url_from_id(package_id):
return helpers.url_for(controller='dataset', action='read', id=package_id)
def url_last_member(name_collection):
return helpers.url_for(
controller='ckanext.odsh.collection.controller:LatestDatasetController',
action='latest',
id=name_collection
)
return toolkit.url_for('odsh_collection.latest_dataset', id=name_collection)
def get_latest_dataset(collection_name):
collection_info = get_collection_info(collection_name)
......
from ckan.lib.plugins import DefaultTranslation, DefaultDatasetForm
import ckan.plugins as plugins
import ckan.plugins.toolkit as toolkit
from . import helpers as collection_helpers
from routes.mapper import SubMapper
from flask import Blueprint
class CollectionsPlugin(plugins.SingletonPlugin, DefaultDatasetForm):
plugins.implements(plugins.IDatasetForm, inherit=True)
plugins.implements(plugins.IRoutes, inherit=True)
plugins.implements(plugins.ITemplateHelpers)
plugins.implements(plugins.IBlueprint)
# IDataSetForm
......@@ -22,32 +21,13 @@ class CollectionsPlugin(plugins.SingletonPlugin, DefaultDatasetForm):
return 'package/collection_read.html'
# IRoutes
def before_map(self, map):
map.connect(
'/collection/{id}/aktuell',
controller='ckanext.odsh.collection.controller:LatestDatasetController',
action='latest_dataset'
)
map.connect(
'/collection/{id}/aktuell.{resource_format}',
controller='ckanext.odsh.collection.controller:LatestRecourcesController',
action='latest_resource'
)
# IBlueprint
def get_blueprint(self):
blueprint = Blueprint('odsh_collection', self.__module__)
with SubMapper(
map,
controller='ckanext.odsh.collection.controller:LatestDatasetController',
path_prefix='/collection/'
) as m:
m.connect('latest', '{id}/aktuell', action='latest')
m.connect('latest_resource', '{id}/aktuell.{resource_format}', action='latest_resource')
return map
def after_map(self, map):
return map
blueprint.add_url_rule('/collection/<id>/aktuell', 'latest_dataset', self.latest_dataset)
blueprint.add_url_rule('/collection/<id>/aktuell.<resource_format>', 'latest_resource', self.latest_resource)
return blueprint
# ITemplateHelpers
......@@ -62,3 +42,34 @@ class CollectionsPlugin(plugins.SingletonPlugin, DefaultDatasetForm):
'url_from_id': collection_helpers.url_from_id,
}
def latest_dataset(self, id):
latest_dataset = collection_helpers.get_latest_dataset(id)
if latest_dataset is None:
toolkit.abort(404)
return toolkit.redirect_to('dataset.read', id=latest_dataset)
def latest_resource(self, id, resource_format):
latest_resources = collection_helpers.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 toolkit.is_url(pre_resource_url):
url_resource = pre_resource_url
else:
url_resource = toolkit.url_for(controller='dataset',
action='resource_download',
id=download_package_id,
resource_id=download_resource_id,
filename=pre_resource_url)
toolkit.redirect_to(url_resource)
else:
toolkit.abort(404)
......@@ -412,6 +412,3 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
if score > 0:
dict_pkg['openness'] = OdshPlugin.scores[score-1]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment