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
No related branches found
No related tags found
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