From 15b43573810a8127c7a7c124130681ab89356e2d Mon Sep 17 00:00:00 2001 From: Thorge Petersen <petersen@rz.uni-kiel.de> Date: Thu, 22 Jun 2023 10:05:30 +0200 Subject: [PATCH] Override default tag_name_validator to allow any tag name --- ckanext/odsh/tests_wip/test_validation.py | 8 ++++++++ ckanext/odsh/validation.py | 11 +++++++++++ 2 files changed, 19 insertions(+) diff --git a/ckanext/odsh/tests_wip/test_validation.py b/ckanext/odsh/tests_wip/test_validation.py index 21c02780..746afc75 100644 --- a/ckanext/odsh/tests_wip/test_validation.py +++ b/ckanext/odsh/tests_wip/test_validation.py @@ -105,3 +105,11 @@ def test_validate_licenseAttributionByText(): ('extras', 0, 'key'): 'licenseAttributionByText', ('extras', 0, 'value'): ''} validate_licenseAttributionByText('key', data, {}, None) + +def test_tag_name_validator_invalid(): + with pytest.raises(Exception): + tag_name_validator('Foo\nBar', None) + + +def test_tag_name_validator_valid(): + tag_name_validator('Regionalplan für den Planungsraum_I: (5.8 – Windenergie_an_Land)', None) diff --git a/ckanext/odsh/validation.py b/ckanext/odsh/validation.py index d9173155..f7f35b3a 100644 --- a/ckanext/odsh/validation.py +++ b/ckanext/odsh/validation.py @@ -293,6 +293,7 @@ def tag_string_convert(key, data, errors, context): for tag in tags: toolkit.get_validator('tag_length_validator')(tag, context) + tag_name_validator(tag, context) def validate_relatedPackage(data): @@ -313,6 +314,15 @@ def validate_formats(data, errors): return data +def tag_name_validator(value, context): + """Allow tag name to contain any characters but no newlines + """ + tagname_match = re.compile(r'/^(?=.*[^\n])[^\n]*$', re.UNICODE) + if not tagname_match.match(value): + raise toolkit.Invalid(_('Invalid tag: "%s". Tags cannot contain line breaks.') % (value)) + return value + + def get_validators(): return { 'known_spatial_uri': known_spatial_uri, @@ -320,4 +330,5 @@ def get_validators(): 'validate_licenseAttributionByText': validate_licenseAttributionByText, 'validate_relatedPackage': validate_relatedPackage, 'odsh_validate_format': validate_formats, + 'tag_name_validator': tag_name_validator, } -- GitLab