Skip to content

Incorrect warnings when ckan.views.default_views is (almost) empty #3093

Closed
@torfsen

Description

@torfsen

Due to #3011 I recently set

ckan.views.default_views =

in my INI, so that by default no views are created at all.

Since then I'm getting many warnings of the form

2016-06-06 16:23:03,537 WARNI [ckan.lib.datapreview] Plugin for view  could not be found

The problem seems to be that ckan.lib.datapreview.get_default_view_plugins splits the configuration value in a rather naive way:

default_view_types = config.get('ckan.views.default_views').split(' ')

Using .split(' ') will split on a single space, thereby creating problems with leading, trailing, and multiple spaces:

>>> ' foo  bar  '.split(' ')
['', 'foo', '', 'bar', '', '']

Even worse:

>>> ''.split(' ')
['']

To simply split on whitespace (as was probably intended), use the no-argument form of split:

>>> ' foo  bar  '.split()
['foo', 'bar']
>>> ''.split()
[]

Using split() instead of split(' ') fixes the issue for me. I'll create a PR.

A quick grep turns up a few other places with similar code (although I didn't check whether they are also problematic):

$ grep -r "split(' ')" --include "*.py" ckan ckanext/
ckan/logic/action/get.py:            fq = ' '.join(p for p in fq.split(' ')
ckan/lib/helpers.py:                                   kwargs.get('action', '')).split(' ')
ckan/lib/datapreview.py:        default_view_types = config.get('ckan.views.default_views').split(' ')
ckan/ckan_nose_plugin.py:##        #    testname = testname.split(' ')[1]

$ grep -r 'split(" ")' --include "*.py" ckan ckanext/
ckan/lib/base.py:                in config['ckan.cors.origin_whitelist'].split(" "):

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions