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

start refactor validation

parent d13590e2
No related branches found
No related tags found
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