Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for the new version of CKAN #61

Open
ctc-enokida opened this issue Nov 24, 2020 · 2 comments
Open

Support for the new version of CKAN #61

ctc-enokida opened this issue Nov 24, 2020 · 2 comments

Comments

@ctc-enokida
Copy link

ctc-enokida commented Nov 24, 2020

1.Does the ckanext-privatedatasets plugin plan to support newer versions of CKAN (2.9 or later)?

2.Does this plugin not support the latest CKAN 2.8 branch?

An error occurred when running on the master branch of CKAN,
and current 2.8 branch(2.8.6).
(It worked fine with the ckan-2.8.0 tag.)
I would appreciate any answer to this question.

Error log:
Error - <type 'exceptions.IndexError'>: list assignment index out of range
URL: http://[my server]/dataset/edit/test_dataset
File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/weberror/errormiddleware.py', line 171 in call
app_iter = self.application(environ, sr_checker)
File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/webob/dec.py', line 147 in call
resp = self.call_func(req, *args, **self.kwargs)
File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/webob/dec.py', line 208 in call_func
return self.func(req, *args, **kwargs)
File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/fanstatic/publisher.py', line 234 in call
return request.get_response(self.app)
File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/webob/request.py', line 1053 in get_response
application, catch_exc_info=False)
File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/webob/request.py', line 1022 in call_application
app_iter = application(self.environ, start_response)
File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/webob/dec.py', line 147 in call
resp = self.call_func(req, *args, **self.kwargs)
File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/webob/dec.py', line 208 in call_func
return self.func(req, *args, **kwargs)
File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/fanstatic/injector.py', line 54 in call
response = request.get_response(self.app)
File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/webob/request.py', line 1053 in get_response
application, catch_exc_info=False)
File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/webob/request.py', line 1022 in call_application
app_iter = application(self.environ, start_response)
File '/usr/lib/ckan/venv/src/ckan/ckan/config/middleware/pylons_app.py', line 264 in inner
result = application(environ, start_response)
File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/beaker/middleware.py', line 73 in call
return self.app(environ, start_response)
File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/beaker/middleware.py', line 156 in call
return self.wrap_app(environ, session_start_response)
File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/routes/middleware.py', line 131 in call
response = self.app(environ, start_response)
File '/usr/lib/ckan/venv/src/ckan/ckan/config/middleware/common_middleware.py', line 33 in call
return self.app(environ, start_response)
File '/usr/lib/ckan/venv/src/ckan/ckan/config/middleware/common_middleware.py', line 59 in call
return self.app(environ, start_response)
File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/pylons/wsgiapp.py', line 125 in call
response = self.dispatch(controller, environ, start_response)
File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/pylons/wsgiapp.py', line 324 in dispatch
return controller(environ, start_response)
File '/usr/lib/ckan/venv/src/ckan/ckan/lib/base.py', line 242 in call
res = WSGIController.call(self, environ, start_response)
File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 221 in call
response = self._dispatch_call()
File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 172 in _dispatch_call
response = self._inspect_call(func)
File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 107 in _inspect_call
result = self._perform_call(func, args)
File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 60 in _perform_call
return func(**args)
File '/usr/lib/ckan/venv/src/ckan/ckan/controllers/package.py', line 767 in edit
return self._save_edit(id, context, package_type=package_type)
File '/usr/lib/ckan/venv/src/ckan/ckan/controllers/package.py', line 986 in _save_edit
pkg = get_action('package_update')(context, data_dict)
File '/usr/lib/ckan/venv/src/ckan/ckan/logic/init.py', line 467 in wrapped
result = _action(context, data_dict, **kw)
File '/usr/lib/ckan/venv/src/ckan/ckan/logic/action/update.py', line 293 in package_update
package_plugin, context, data_dict, schema, 'package_update')
File '/usr/lib/ckan/venv/src/ckan/ckan/lib/plugins.py', line 272 in plugin_validate
return toolkit.navl_validate(data_dict, schema, context)
File '/usr/lib/ckan/venv/src/ckan/ckan/lib/navl/dictization_functions.py', line 298 in validate
converted_data = unflatten(converted_data)
File '/usr/lib/ckan/venv/src/ckan/ckan/lib/navl/dictization_functions.py', line 461 in unflatten
current_pos[flattend_key[-1]] = data[flattend_key]
IndexError: list assignment index out of range

@ralphgrafqp
Copy link

We also have an issue with 2.10:

Traceback (most recent call last):
File "/usr/bin/ckan", line 8, in
sys.exit(ckan())
File "/usr/lib/python3.10/site-packages/click/core.py", line 1130, in call
return self.main(*args, **kwargs)
File "/usr/lib/python3.10/site-packages/click/core.py", line 1054, in main
with self.make_context(prog_name, args, **extra) as ctx:
File "/usr/lib/python3.10/site-packages/click/core.py", line 920, in make_context
self.parse_args(ctx, args)
File "/srv/app/src/ckan/ckan/cli/cli.py", line 121, in parse_args
result = super().parse_args(ctx, args)
File "/usr/lib/python3.10/site-packages/click/core.py", line 1613, in parse_args
rest = super().parse_args(ctx, args)
File "/usr/lib/python3.10/site-packages/click/core.py", line 1378, in parse_args
value, args = param.handle_parse_result(ctx, opts, args)
File "/usr/lib/python3.10/site-packages/click/core.py", line 2360, in handle_parse_result
value = self.process_value(ctx, value)
File "/usr/lib/python3.10/site-packages/click/core.py", line 2322, in process_value
value = self.callback(ctx, self, value)
File "/srv/app/src/ckan/ckan/cli/cli.py", line 131, in _init_ckan_config
_add_ctx_object(ctx, value)
File "/srv/app/src/ckan/ckan/cli/cli.py", line 140, in _add_ctx_object
ctx.obj = CtxObject(path)
File "/srv/app/src/ckan/ckan/cli/cli.py", line 57, in init
self.app = make_app(raw_config)
File "/srv/app/src/ckan/ckan/config/middleware/init.py", line 27, in make_app
load_environment(conf)
File "/srv/app/src/ckan/ckan/config/environment.py", line 69, in load_environment
p.load_all()
File "/srv/app/src/ckan/ckan/plugins/core.py", line 222, in load_all
load(*plugins)
File "/srv/app/src/ckan/ckan/plugins/core.py", line 238, in load
service = _get_service(plugin)
File "/srv/app/src/ckan/ckan/plugins/core.py", line 345, in _get_service
return plugin.load()(name=plugin_name)
File "/usr/lib/python3.10/site-packages/pkg_resources/init.py", line 2781, in load
return self.resolve()
File "/usr/lib/python3.10/site-packages/pkg_resources/init.py", line 2787, in resolve
module = import(self.module_name, fromlist=['name'], level=0)
File "/usr/lib/python3.10/site-packages/ckanext/privatedatasets/plugin.py", line 30, in
from ckanext.privatedatasets.views import acquired_datasets
File "/usr/lib/python3.10/site-packages/ckanext/privatedatasets/views.py", line 48, in
class AcquiredDatasetsControllerUI(base.BaseController):
AttributeError: module 'ckan.lib.base' has no attribute 'BaseController'
Traceback (most recent call last):
File "/srv/app/prerun.py", line 225, in
init_db()
File "/srv/app/prerun.py", line 121, in init_db
raise e
File "/srv/app/prerun.py", line 109, in init_db
subprocess.check_output(db_command, stderr=subprocess.STDOUT)
File "/usr/lib/python3.10/subprocess.py", line 421, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File "/usr/lib/python3.10/subprocess.py", line 526, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['ckan', '-c', '/srv/app/production.ini', 'db', 'init']' returned non-zero exit status 1.

@affkjuhyt
Copy link

1.Does the ckanext-privatedatasets plugin plan to support newer versions of CKAN (2.9 or later)?

2.Does this plugin not support the latest CKAN 2.8 branch?

An error occurred when running on the master branch of CKAN, and current 2.8 branch(2.8.6). (It worked fine with the ckan-2.8.0 tag.) I would appreciate any answer to this question.

Error log: Error - <type 'exceptions.IndexError'>: list assignment index out of range URL: http://[my server]/dataset/edit/test_dataset File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/weberror/errormiddleware.py', line 171 in call app_iter = self.application(environ, sr_checker) File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/webob/dec.py', line 147 in call resp = self.call_func(req, *args, **self.kwargs) File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/webob/dec.py', line 208 in call_func return self.func(req, *args, **kwargs) File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/fanstatic/publisher.py', line 234 in call return request.get_response(self.app) File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/webob/request.py', line 1053 in get_response application, catch_exc_info=False) File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/webob/request.py', line 1022 in call_application app_iter = application(self.environ, start_response) File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/webob/dec.py', line 147 in call resp = self.call_func(req, *args, **self.kwargs) File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/webob/dec.py', line 208 in call_func return self.func(req, *args, **kwargs) File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/fanstatic/injector.py', line 54 in call response = request.get_response(self.app) File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/webob/request.py', line 1053 in get_response application, catch_exc_info=False) File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/webob/request.py', line 1022 in call_application app_iter = application(self.environ, start_response) File '/usr/lib/ckan/venv/src/ckan/ckan/config/middleware/pylons_app.py', line 264 in inner result = application(environ, start_response) File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/beaker/middleware.py', line 73 in call return self.app(environ, start_response) File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/beaker/middleware.py', line 156 in call return self.wrap_app(environ, session_start_response) File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/routes/middleware.py', line 131 in call response = self.app(environ, start_response) File '/usr/lib/ckan/venv/src/ckan/ckan/config/middleware/common_middleware.py', line 33 in call return self.app(environ, start_response) File '/usr/lib/ckan/venv/src/ckan/ckan/config/middleware/common_middleware.py', line 59 in call return self.app(environ, start_response) File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/pylons/wsgiapp.py', line 125 in call response = self.dispatch(controller, environ, start_response) File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/pylons/wsgiapp.py', line 324 in dispatch return controller(environ, start_response) File '/usr/lib/ckan/venv/src/ckan/ckan/lib/base.py', line 242 in call res = WSGIController.call(self, environ, start_response) File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 221 in call response = self._dispatch_call() File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 172 in _dispatch_call response = self._inspect_call(func) File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 107 in _inspect_call result = self._perform_call(func, args) File '/usr/lib/ckan/venv/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 60 in _perform_call return func(**args) File '/usr/lib/ckan/venv/src/ckan/ckan/controllers/package.py', line 767 in edit return self._save_edit(id, context, package_type=package_type) File '/usr/lib/ckan/venv/src/ckan/ckan/controllers/package.py', line 986 in _save_edit pkg = get_action('package_update')(context, data_dict) File '/usr/lib/ckan/venv/src/ckan/ckan/logic/init.py', line 467 in wrapped result = _action(context, data_dict, **kw) File '/usr/lib/ckan/venv/src/ckan/ckan/logic/action/update.py', line 293 in package_update package_plugin, context, data_dict, schema, 'package_update') File '/usr/lib/ckan/venv/src/ckan/ckan/lib/plugins.py', line 272 in plugin_validate return toolkit.navl_validate(data_dict, schema, context) File '/usr/lib/ckan/venv/src/ckan/ckan/lib/navl/dictization_functions.py', line 298 in validate converted_data = unflatten(converted_data) File '/usr/lib/ckan/venv/src/ckan/ckan/lib/navl/dictization_functions.py', line 461 in unflatten current_pos[flattend_key[-1]] = data[flattend_key] IndexError: list assignment index out of range

Hi @ctc-enokida You can fix in method allowed_users_convert as below:

def allowed_users_convert(key, data, errors, context):
    # By default, all the fileds are in the data dictionary even if they contains nothing. In this case,
    # the value is 'ckan.lib.navl.dictization_functions.Missing' and for this reason the type is checked

    # Get the allowed user list
    if (constants.ALLOWED_USERS,) in data and isinstance(data[(constants.ALLOWED_USERS,)], list):
        allowed_users = data[(constants.ALLOWED_USERS,)]
    elif (constants.ALLOWED_USERS_STR,) in data and isinstance(data[(constants.ALLOWED_USERS_STR,)], six.string_types):
        allowed_users_str = data[(constants.ALLOWED_USERS_STR,)].strip()
        allowed_users = [allowed_user for allowed_user in allowed_users_str.split(',') if allowed_user.strip() != '']
    else:
        allowed_users = None

    if allowed_users is not None:
        current_index = max([int(k[1]) for k in data.keys() if len(k) == 2 and k[0] == key[0]] + [-1])

        if len(allowed_users) == 0:
            data[(constants.ALLOWED_USERS,)] = []
        else:
            for num, allowed_user in zip(count(current_index + 1), allowed_users):
                allowed_user = allowed_user.strip()
                data[(key[0], num, 'value')] = allowed_user

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants