Skip to content
Snippets Groups Projects
Commit 93df3348 authored by anonymous's avatar anonymous
Browse files

start refactor validation

parent d13590e2
Branches
Tags
No related merge requests found
...@@ -160,6 +160,8 @@ def odsh_extract_error(key, errors, field='extras'): ...@@ -160,6 +160,8 @@ def odsh_extract_error(key, errors, field='extras'):
return error.replace(key+':', '') return error.replace(key+':', '')
def odsh_extract_error_new(key, errors): def odsh_extract_error_new(key, errors):
print('ERRORS')
print(errors)
if not errors or not ('__extras' in errors): if not errors or not ('__extras' in errors):
return None return None
error = errors['__extras'][0].get(key,None) error = errors['__extras'][0].get(key,None)
......
No preview for this file type
...@@ -207,10 +207,16 @@ msgstr "Bitte geben Sie einen Titel ein" ...@@ -207,10 +207,16 @@ msgstr "Bitte geben Sie einen Titel ein"
msgid "odsh_issued_error_label" msgid "odsh_issued_error_label"
msgstr "Bitte wählen Sie ein Veröffentlichungsdatum" msgstr "Bitte wählen Sie ein Veröffentlichungsdatum"
msgid "issued: empty"
msgstr "Bitte wählen Sie ein Veröffentlichungsdatum"
msgid "odsh_issued_not_date_error_label" msgid "odsh_issued_not_date_error_label"
msgstr "Bitte wählen Sie ein korrektes Veröffentlichungsdatum" msgstr "Bitte wählen Sie ein korrektes Veröffentlichungsdatum"
msgid "issued: not a valid date"
msgstr "Bitte wählen Sie ein korrektes Veröffentlichungsdatum"
msgid "Tag string: Fehlender Wert" msgid "Tag string: Fehlender Wert"
msgstr "Bitte wählen Sie geeignete Schlagwörter" msgstr "Bitte wählen Sie geeignete Schlagwörter"
......
...@@ -253,7 +253,6 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm ...@@ -253,7 +253,6 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
schema['extras'].update({ schema['extras'].update({
'key': [ 'key': [
toolkit.get_converter('odsh_validate_issued'),
toolkit.get_converter('odsh_validate_temporal_start'), toolkit.get_converter('odsh_validate_temporal_start'),
toolkit.get_converter('odsh_validate_temporal_end'), toolkit.get_converter('odsh_validate_temporal_end'),
toolkit.get_converter('known_spatial_uri'), toolkit.get_converter('known_spatial_uri'),
......
...@@ -158,8 +158,8 @@ is_required=true,placeholder=_('Enter title')) }} ...@@ -158,8 +158,8 @@ is_required=true,placeholder=_('Enter title')) }}
{% set field = 'issued' %} {% set field = 'issued' %}
{% set data_issued = h.odsh_extract_value_from_extras(data.extras,field) %} {% set data_issued = h.odsh_extract_value_from_extras(data.extras,field) %}
{% set value = data_issued.split('T')[0] if data_issued else h.odsh_now()%} {% set error = h.odsh_extract_error_new(field, errors) %}
{% set error = h.odsh_extract_error(field, errors) %} {% set value = data_issued.split('T')[0] if data_issued else (h.odsh_now() if not error else '')%}
<div class="control-group {{ " error" if error }} control-full"> <div class="control-group {{ " error" if error }} control-full">
<label class="control-label" for="field-{{field}}">Veröffentlichungsdatum: <span title="Dieses Feld ist erforderlich" class="control-required">*</span> </label> <label class="control-label" for="field-{{field}}">Veröffentlichungsdatum: <span title="Dieses Feld ist erforderlich" class="control-required">*</span> </label>
<div class="controls"> <div class="controls">
...@@ -172,7 +172,7 @@ is_required=true,placeholder=_('Enter title')) }} ...@@ -172,7 +172,7 @@ is_required=true,placeholder=_('Enter title')) }}
</div> </div>
<div class="span6 inline-error"> <div class="span6 inline-error">
{% if error %} {% if error %}
{{_(error)}} {{_('issued: ' + error)}}
{% endif %} {% endif %}
</div> </div>
</div> </div>
......
...@@ -24,7 +24,7 @@ def _extract_value(data, field): ...@@ -24,7 +24,7 @@ def _extract_value(data, field):
def validate_extra_groups(data): def validate_extra_groups(data):
value = _extract_value(data, 'groups') value = _extract_value(data, 'groups')
if not value: if not value:
raise toolkit.Invalid({'groups':'at least one group needed'}) return 'at least one group needed'
groups = [g.strip() for g in value.split(',') if value.strip()] groups = [g.strip() for g in value.split(',') if value.strip()]
for k in data.keys(): for k in data.keys():
...@@ -32,13 +32,24 @@ def validate_extra_groups(data): ...@@ -32,13 +32,24 @@ def validate_extra_groups(data):
data[k]='' data[k]=''
# del data[k] # del data[k]
if len(groups)==0: if len(groups)==0:
raise toolkit.Invalid({'groups':'at least one group needed'}) return 'at least one group needed'
for num, tag in zip(range(len(groups)), groups): for num, tag in zip(range(len(groups)), groups):
data[('groups', num, 'id')] = tag data[('groups', num, 'id')] = tag
def validate_extras(key, data, errors, context): def validate_extras(key, data, errors, context):
validate_extra_groups(data) pass
extra_errors = {}
error = validate_extra_groups(data)
if error:
extra_errors['groups'] = error
error = validate_extra_date_new(key, 'issued', data, False)
if error:
extra_errors['issued'] = error
if extra_errors:
raise toolkit.Invalid(extra_errors)
def _set_value(data, field, value): def _set_value(data, field, value):
key = None key = None
...@@ -50,12 +61,32 @@ def _set_value(data, field, value): ...@@ -50,12 +61,32 @@ def _set_value(data, field, value):
return None return None
data[(key[0], key[1], 'value')] = value data[(key[0], key[1], 'value')] = value
def validate_extra_date(key, field, data, errors, context): def validate_extra_date_new(key, field, data, optional=False):
value = _extract_value(data, field)
if not value:
if optional:
return
# Statistikamt Nord does not always provide temporal_start/end,
# but their datasets have to be accepted as they are.
if not ('id',) in data or data[('id',)][:7] != 'StaNord':
return 'empty'
else:
if re.match(r'\d\d\d\d-\d\d-\d\d', value):
try:
dt=parse(value)
_set_value(data, field, dt.isoformat())
return
except ValueError:
pass
return 'not a valid date'
def validate_extra_date(key, field, data, optional=False):
value = _extract_value(data, field) value = _extract_value(data, field)
if not value: if not value:
if field == 'temporal_end': if optional:
return # temporal_end is optional return
# Statistikamt Nord does not always provide temporal_start/end, # Statistikamt Nord does not always provide temporal_start/end,
# but their datasets have to be accepted as they are. # but their datasets have to be accepted as they are.
if not ('id',) in data or data[('id',)][:7] != 'StaNord': if not ('id',) in data or data[('id',)][:7] != 'StaNord':
...@@ -71,8 +102,8 @@ def validate_extra_date(key, field, data, errors, context): ...@@ -71,8 +102,8 @@ def validate_extra_date(key, field, data, errors, context):
raise toolkit.Invalid(field+':odsh_'+field+'_not_date_error_label') raise toolkit.Invalid(field+':odsh_'+field+'_not_date_error_label')
def validate_extra_date_factory(field): def validate_extra_date_factory(field, optional=False):
return lambda key, data, errors, context: validate_extra_date(key, field, data, errors, context) return lambda key, data, errors, context: validate_extra_date(key, field, data, optional)
def validate_licenseAttributionByText(key, data, errors, context): def validate_licenseAttributionByText(key, data, errors, context):
register = model.Package.get_license_register() register = model.Package.get_license_register()
...@@ -172,9 +203,8 @@ def get_validators(): ...@@ -172,9 +203,8 @@ def get_validators():
return { return {
'licenseAttributionByText': validate_licenseAttributionByText, 'licenseAttributionByText': validate_licenseAttributionByText,
'known_spatial_uri': known_spatial_uri, 'known_spatial_uri': known_spatial_uri,
'odsh_validate_issued': validate_extra_date_factory('issued'),
'odsh_validate_temporal_start': validate_extra_date_factory('temporal_start'), 'odsh_validate_temporal_start': validate_extra_date_factory('temporal_start'),
'odsh_validate_temporal_end': validate_extra_date_factory('temporal_end'), 'odsh_validate_temporal_end': validate_extra_date_factory('temporal_end', True),
'odsh_tag_name_validator': tag_name_validator, 'odsh_tag_name_validator': tag_name_validator,
'odsh_validate_extras':validate_extras 'odsh_validate_extras':validate_extras
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment