ckan / ckanext-validation

CKAN extension for validating Data Packages using Table Schema.
MIT License
28 stars 33 forks source link

bug with `is_url` ? #92

Open KatiRG opened 1 year ago

KatiRG commented 1 year ago

CKAN errors out at line 4 of resource_schema.html if I have uploaded a JSON file containing a schema. The error is:

File "/usr/lib/ckan/default/src/ckanext-ontario_theme/ckanext/ontario_theme/templates/internal/scheming/form_snippets/resource_schema.html", line 7, in top-level template code
    {% set is_url = value and value[4:]|lower == 'http' %}
TypeError: unhashable type: 'slice'

The JSON file contains the following schema object:

{
    "fields": [
        {
            "name": "rule",
            "type": "string"
        },
        {
            "name": "integercol",
            "type": "number"
        }
    ]
}

and this object gets assigned to the value in line 4.

The line 4 checks if the schema is URL-based, but in this case, value is the above object, therefore value[4:] is invalid. Also, assuming value = http://someaddress, shouldn't the slice be value[:4] ?

ThrawnCA commented 1 year ago

That sounds like an error in ckanext-ontario_theme rather than ckanext-validation.

KatiRG commented 1 year ago

@ThrawnCA I tested with core CKAN and got the same error with slice.

KatiRG commented 1 year ago

To avoid the error I have to set something like this in resource_schema.html:

  {# % set is_url = value and value[4:]|lower == 'http' % #}
  {# % set is_json = not is_url and value % #}
  {% set is_url = 'http' in value %}
  {% set is_json = not is_url %}