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

Started with Pylons to Blueprints Migration

parent 66d4f958
Branches
Tags
3 merge requests!41Version 2.0.0,!38Merge py3 into dev,!37Started with Pylons to Blueprints Migration
from ckan.lib.plugins import DefaultTranslation, DefaultDatasetForm from ckan.lib.plugins import DefaultDatasetForm
import ckan.plugins as plugins import ckan.plugins as plugins
import ckan.plugins.toolkit as toolkit import ckan.plugins.toolkit as toolkit
from . import helpers as collection_helpers from . import helpers as collection_helpers
......
...@@ -28,73 +28,6 @@ render = base.render ...@@ -28,73 +28,6 @@ render = base.render
get_action = logic.get_action get_action = logic.get_action
class OdshRouteController(HomeController):
def info_page(self):
h.redirect_to('http://www.schleswig-holstein.de/odpinfo')
def start(self):
h.redirect_to('/dataset')
def not_found(self):
abort(404)
class OdshUserController(UserController):
def index(self):
if not authz.is_sysadmin(c.user):
abort(404)
return super(OdshUserController, self).index()
def me(self, locale=None):
if not c.user:
h.redirect_to(locale=locale, controller='user', action='login',
id=None)
user_ref = c.userobj.get_reference_preferred_for_uri()
h.redirect_to(locale=locale, controller='dataset', action='search')
def dashboard(self, id=None, offset=0):
if not authz.is_sysadmin(c.user):
abort(404)
return super(OdshUserController, self).dashboard(id, offset)
def dashboard_datasets(self):
if not authz.is_sysadmin(c.user):
abort(404)
return super(OdshUserController, self).dashboard_datasets(id)
def read(self, id=None):
if not c.user:
h.redirect_to(controller='user', action='login')
return super(OdshUserController, self).read(id)
def follow(self, id):
if not authz.is_sysadmin(c.user):
abort(404)
return super(OdshUserController, self).follow(id)
def unfollow(self, id):
if not authz.is_sysadmin(c.user):
abort(404)
return super(OdshUserController, self).unfollow(id)
def activity(self, id, offset=0):
if not authz.is_sysadmin(c.user):
abort(404)
return super(OdshUserController, self).activity(id, offset)
def register(self, data=None, errors=None, error_summary=None):
if not authz.is_sysadmin(c.user):
abort(404)
return super(OdshUserController, self).register(data, errors, error_summary)
class OdshPackageController(PackageController):
def edit_view(self, id, resource_id, view_id=None):
if not authz.is_sysadmin(c.user):
abort(403)
return super(OdshPackageController, self).edit_view(id, resource_id, view_id)
class OdshGroupController(OrganizationController): class OdshGroupController(OrganizationController):
def _action(self, name): def _action(self, name):
......
...@@ -309,20 +309,20 @@ def odsh_group_id_selected(selected, group_id): ...@@ -309,20 +309,20 @@ def odsh_group_id_selected(selected, group_id):
return False return False
def odsh_remove_route(map, routename): # def odsh_remove_route(map, routename):
route = None # route = None
for i, r in enumerate(map.matchlist): # for i, r in enumerate(map.matchlist):
if r.name == routename: # if r.name == routename:
route = r # route = r
break # break
if route is not None: # if route is not None:
map.matchlist.remove(route) # map.matchlist.remove(route)
for key in map.maxkeys: # for key in map.maxkeys:
if key == route.maxkeys: # if key == route.maxkeys:
map.maxkeys.pop(key) # map.maxkeys.pop(key)
map._routenames.pop(route.name) # map._routenames.pop(route.name)
break # break
def is_within_last_month(date, date_ref=None): def is_within_last_month(date, date_ref=None):
......
...@@ -27,12 +27,17 @@ import ckanext.odsh.validation as validation ...@@ -27,12 +27,17 @@ import ckanext.odsh.validation as validation
import ckanext.odsh.search as search import ckanext.odsh.search as search
from ckanext.odsh.odsh_logger import OdshLogger from ckanext.odsh.odsh_logger import OdshLogger
import ckanext.odsh.tools as tools import ckanext.odsh.tools as tools
from ckanext.odsh.views import default
from ckanext.odsh.views import package
from ckanext.odsh.views import user
from ckanext.odsh.views import dashboard
from ckanext.dcat import blueprints as dcat_view
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
_ = toolkit._ _ = toolkit._
class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm): class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm):
plugins.implements(plugins.IActions) plugins.implements(plugins.IActions)
plugins.implements(plugins.IConfigurer) plugins.implements(plugins.IConfigurer)
...@@ -44,7 +49,53 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm ...@@ -44,7 +49,53 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
plugins.implements(plugins.ITranslation) plugins.implements(plugins.ITranslation)
plugins.implements(plugins.IValidators) plugins.implements(plugins.IValidators)
plugins.implements(plugins.IResourceController, inherit=True) plugins.implements(plugins.IResourceController, inherit=True)
plugins.implements(plugins.IBlueprint)
# IBlueprint
def get_blueprint(self):
log.info("OdshPlugin::get_blueprint")
# Default
bp_default = default.blueprint
rules = [
('/info_page', 'info_page', default.info_page),
('/home', 'start', default.start),
('/not_found', 'not_found', default.not_found), ]
for rule in rules:
bp_default.add_url_rule(*rule)
# DCAT
# if toolkit.asbool(toolkit.config.get('ckanext.dcat.enable_rdf_endpoints', True)):
# odsh_helpers.odsh_remove_route(map, 'dcat_catalog')
# bp_default.add_url_rule('/catalog.<any("xml", "rdf", "n3", "ttl", "jsonld"):_format>', view_func=dcat_view.read_catalog, defaults={'_format': 'xml'}, methods=['GET'])
# Package
bp_package = package.blueprint
rules = [
('/dataset/<id>/resource/<resource_id>', 'redirect_dataset_resource', package.redirect_dataset_resource), ]
for rule in rules:
bp_package.add_url_rule(*rule)
# User
bp_user = user.blueprint
bp_user.add_url_rule(u'/user', endpoint='user_index',
view_func=user.index, strict_slashes=False)
bp_user.add_url_rule(u'/user/register', view_func=user.register)
bp_user.add_url_rule(u'/user/activity/<id>', view_func=user.activity)
bp_user.add_url_rule(u'/user/activity/<id>/<int:offset>', view_func=user.activity)
# Dashboard
bp_dashboard = dashboard.blueprint
bp_dashboard.add_url_rule(
u'/dashboard', view_func=dashboard.dashboard, strict_slashes=False, defaults={
u'offset': 0
})
bp_dashboard.add_url_rule(
u'/dashboard/<int:offset>', view_func=dashboard.dashboard)
bp_dashboard.add_url_rule(
u'/dashboard/datasets', view_func=dashboard.dashboard_datasets)
return [bp_default, bp_package, bp_user, bp_dashboard]
# IActions # IActions
...@@ -54,7 +105,6 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm ...@@ -54,7 +105,6 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
'user_create': action.odsh_user_create, 'user_create': action.odsh_user_create,
'resource_create': action.odsh_resource_create, } 'resource_create': action.odsh_resource_create, }
# IConfigurer # IConfigurer
def update_config(self, config_): def update_config(self, config_):
...@@ -62,7 +112,6 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm ...@@ -62,7 +112,6 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
toolkit.add_public_directory(config_, 'public') toolkit.add_public_directory(config_, 'public')
toolkit.add_resource('fanstatic', 'ckanext-odsh') toolkit.add_resource('fanstatic', 'ckanext-odsh')
# IDatasetForm # IDatasetForm
def package_types(self): def package_types(self):
...@@ -167,7 +216,6 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm ...@@ -167,7 +216,6 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
}) })
return schema return schema
# IFacets # IFacets
def dataset_facets(self, facets_dict, package_type): def dataset_facets(self, facets_dict, package_type):
...@@ -191,7 +239,6 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm ...@@ -191,7 +239,6 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
'license_title': _('License'), 'license_title': _('License'),
'groups': _('Category')}) 'groups': _('Category')})
# IPackageController # IPackageController
def after_show(self, context, pkg_dict): def after_show(self, context, pkg_dict):
...@@ -229,7 +276,6 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm ...@@ -229,7 +276,6 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
is_new = HelperPgkDict(pkg_dict).is_package_new() is_new = HelperPgkDict(pkg_dict).is_package_new()
pkg_dict.update({'is_new': is_new}) pkg_dict.update({'is_new': is_new})
def before_index(self, dict_pkg): def before_index(self, dict_pkg):
# make special date fields solr conform # make special date fields solr conform
fields = ["issued", "temporal_start", "temporal_end"] fields = ["issued", "temporal_start", "temporal_end"]
...@@ -244,23 +290,8 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm ...@@ -244,23 +290,8 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
return dict_pkg return dict_pkg
# IRoutes # IRoutes
def before_map(self, map):
map.connect(
'info_page',
'/info_page',
controller='ckanext.odsh.controller:OdshRouteController',
action='info_page'
)
map.connect(
'home',
'/',
controller='ckanext.odsh.controller:OdshRouteController',
action='start'
)
map.redirect('/dataset/{id}/resource/{resource_id}', '/dataset/{id}') map.redirect('/dataset/{id}/resource/{resource_id}', '/dataset/{id}')
# /api ver 3 # /api ver 3
...@@ -277,30 +308,25 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm ...@@ -277,30 +308,25 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
with SubMapper(map, controller='ckanext.odsh.controller:OdshFeedController') as m: with SubMapper(map, controller='ckanext.odsh.controller:OdshFeedController') as m:
m.connect('/feeds/custom.atom', action='custom') m.connect('/feeds/custom.atom', action='custom')
with SubMapper(map, controller='ckanext.odsh.controller:OdshPackageController') as m:
m.connect('new_view', '/dataset/{id}/resource/{resource_id}/new_view',
action='edit_view', ckan_icon='pencil-square-o')
with SubMapper(map, controller='ckanext.odsh.controller:OdshGroupController') as m: with SubMapper(map, controller='ckanext.odsh.controller:OdshGroupController') as m:
m.connect('organizations_index', '/organization', action='index') m.connect('organizations_index', '/organization', action='index')
# redirect all user routes to custom controller # redirect all user routes to custom controller
with SubMapper(map, controller='ckanext.odsh.controller:OdshUserController') as m: # with SubMapper(map, controller='ckanext.odsh.controller:OdshUserController') as m:
m.connect('user_index', '/user', action='index') # m.connect('/user/edit', action='edit')
m.connect('/user/edit', action='edit') # m.connect(
m.connect( # 'user_edit', '/user/edit/{id:.*}', action='edit', ckan_icon='cog')
'user_edit', '/user/edit/{id:.*}', action='edit', ckan_icon='cog') # m.connect('user_delete', '/user/delete/{id}', action='delete')
m.connect('user_delete', '/user/delete/{id}', action='delete') # m.connect('/user/reset/{id:.*}', action='perform_reset')
m.connect('/user/reset/{id:.*}', action='perform_reset') # m.connect('/user/reset', action='request_reset')
m.connect('/user/reset', action='request_reset') # m.connect('register', '/user/register', action='register')
m.connect('register', '/user/register', action='register') # m.connect('login', '/user/login', action='login')
m.connect('login', '/user/login', action='login') # m.connect('/user/_logout', action='logout')
m.connect('/user/_logout', action='logout') # m.connect('/user/logged_in', action='logged_in')
m.connect('/user/logged_in', action='logged_in') # m.connect('/user/logged_out', action='logged_out')
m.connect('/user/logged_out', action='logged_out') # m.connect('/user/logged_out_redirect', action='logged_out_page')
m.connect('/user/logged_out_redirect', action='logged_out_page') # m.connect('user_datasets', '/user/{id:(?!(generate_key|activity)).*}', action='read',
m.connect('user_datasets', '/user/{id:(?!(generate_key|activity)).*}', action='read', # ckan_icon='sitemap')
ckan_icon='sitemap')
map.connect( map.connect(
'comment_datarequest', 'comment_datarequest',
...@@ -323,7 +349,6 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm ...@@ -323,7 +349,6 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
def after_map(self, map): def after_map(self, map):
return map return map
# ITemplateHelpers # ITemplateHelpers
def get_helpers(self): def get_helpers(self):
...@@ -396,4 +421,3 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm ...@@ -396,4 +421,3 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
score = s score = s
if score > 0: if score > 0:
dict_pkg['openness'] = OdshPlugin.scores[score-1] dict_pkg['openness'] = OdshPlugin.scores[score-1]
import ckan.plugins.toolkit as toolkit
import ckan.authz as authz
import ckan.logic as logic
from ckan.common import g
from flask import Blueprint
from ckan.views.dashboard import index
import logging
log = logging.getLogger(__name__)
blueprint = Blueprint('odsh_dashboard', __name__)
def dashboard(offset=0):
log.info("views.dashboard::dashboard")
is_sysadmin = authz.is_sysadmin(g.user)
if not is_sysadmin:
toolkit.abort(403)
return index(offset)
def dashboard_datasets():
log.info("views.dashboard::dashboard_datasets")
is_sysadmin = authz.is_sysadmin(g.user)
if not is_sysadmin:
toolkit.abort(403)
return index()
import ckan.plugins.toolkit as toolkit
from flask import Blueprint
import logging
log = logging.getLogger(__name__)
blueprint = Blueprint('odsh_default', __name__)
def info_page():
log.info("views.default::info_page")
return toolkit.redirect_to('http://www.schleswig-holstein.de/odpinfo')
def start():
log.info("views.default::start")
return toolkit.redirect_to('/dataset')
def not_found():
log.info("views.default::not_found")
toolkit.abort(404)
import ckan.plugins.toolkit as toolkit
import ckan.authz as authz
from flask import Blueprint
import logging
log = logging.getLogger(__name__)
blueprint = Blueprint('odsh_package', __name__)
def redirect_dataset_resource(id, resource_id):
log.info("views.package::redirect_dataset_resource")
return toolkit.redirect_to('/dataset/{}'.format(id))
import ckan.plugins.toolkit as toolkit
import ckan.authz as authz
import ckan.logic as logic
from ckan.common import g
from flask import Blueprint
import ckan.views.user as ckan_user_view
import logging
log = logging.getLogger(__name__)
blueprint = Blueprint('odsh_user', __name__)
def index():
log.info("views.user::index")
is_sysadmin = authz.is_sysadmin(g.user)
if not is_sysadmin:
toolkit.abort(403)
return ckan_user_view.index()
def register():
log.info("views.user::register")
is_sysadmin = authz.is_sysadmin(g.user)
if not is_sysadmin:
toolkit.abort(403)
return ckan_user_view.RegisterView.as_view(str(u'register'))
def read(id=None):
log.info("views.user::read")
if not g.user:
return ckan_user_view.login()
return ckan_user_view.read(id)
def activity(id, offset=0):
log.info("views.user::activity")
is_sysadmin = authz.is_sysadmin(g.user)
if not is_sysadmin:
toolkit.abort(403)
return ckan_user_view.activity(id, offset)
...@@ -43,7 +43,7 @@ setup( ...@@ -43,7 +43,7 @@ setup(
# Specify the Python versions you support here. In particular, ensure # Specify the Python versions you support here. In particular, ensure
# that you indicate whether you support Python 2, Python 3 or both. # that you indicate whether you support Python 2, Python 3 or both.
'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.8.10',
], ],
...@@ -89,6 +89,7 @@ setup( ...@@ -89,6 +89,7 @@ setup(
odsh_dcat_harvest=ckanext.odsh.plugin_odsh_dcat_harvest:OdshDCATHarvestPlugin odsh_dcat_harvest=ckanext.odsh.plugin_odsh_dcat_harvest:OdshDCATHarvestPlugin
odsh_collections=ckanext.odsh.collection.plugin:CollectionsPlugin odsh_collections=ckanext.odsh.collection.plugin:CollectionsPlugin
thumbnail=ckanext.odsh.pdf_to_thumbnail.plugin:ThumbnailPlugin thumbnail=ckanext.odsh.pdf_to_thumbnail.plugin:ThumbnailPlugin
[paste.paster_command] [paste.paster_command]
odsh_initialization = ckanext.odsh.commands.initialization:Initialization odsh_initialization = ckanext.odsh.commands.initialization:Initialization
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment