diff --git a/ckanext/odsh/harvesters/statistikamtnordharvester.py b/ckanext/odsh/harvesters/statistikamtnordharvester.py index aea0a1ead5c5b63e0afcee95c8dc4a79868e4bd6..165435e4d9c2c975b65ead7ce2aa6a6c205d697e 100755 --- a/ckanext/odsh/harvesters/statistikamtnordharvester.py +++ b/ckanext/odsh/harvesters/statistikamtnordharvester.py @@ -174,15 +174,17 @@ class StatistikamtNordHarvester(ODSHBaseHarvester): @staticmethod def add_extras(package_dict, values): # issued sollte noch geliefert werden! - package_dict['extras'].append({ - 'key': 'issued', 'value': datetime.datetime.now().isoformat()}) + #package_dict['extras'].append({ + # 'key': 'issued', 'value': datetime.datetime.now().isoformat()}) try: if values['ZeitraumVon'] != "": package_dict['extras'].append({ - 'key': 'temporal_start', 'value': values['ZeitraumVon']}) + 'key': 'temporal_start', 'value': datetime.datetime.strptime(values['ZeitraumVon'], '%Y-%m-%d') + .isoformat()}) if values['ZeitraumBis'] != "": package_dict['extras'].append({ - 'key': 'temporal_end', 'value': values['ZeitraumBis']}) + 'key': 'temporal_end', 'value': datetime.datetime.strptime(values['ZeitraumBis'], '%Y-%m-%d') + .isoformat()}) except KeyError as kerr: log.debug("Date not available: " + str(kerr)) package_dict['extras'].append({ diff --git a/ckanext/odsh/helpers.py b/ckanext/odsh/helpers.py index 2cefbd48495ecc10af3db7d66d97e0b414cd1a0b..767fcff4d988d4bf41ac7ab30bf5fc8a0c11e450 100644 --- a/ckanext/odsh/helpers.py +++ b/ckanext/odsh/helpers.py @@ -109,7 +109,7 @@ def odsh_render_datetime(datetime_, date_format='{0.day:02d}.{0.month:02d}.{0.ye if not datetime_: return '' try: - DATETIME_FORMAT = '%Y-%m-%d' + DATETIME_FORMAT = '%Y-%m-%dT%H:%M:%S' dt = datetime.datetime.strptime( datetime_, DATETIME_FORMAT) return dt.strftime('%d.%m.%Y') diff --git a/ckanext/odsh/plugin.py b/ckanext/odsh/plugin.py index 6462e580e14931d552e88e4d9a2998b449df83c2..b4365123dacb299afda520206df777495aa9723a 100644 --- a/ckanext/odsh/plugin.py +++ b/ckanext/odsh/plugin.py @@ -77,7 +77,7 @@ def odsh_group_id_selected(selected, group_id): def known_spatial_uri(key, data, errors, context): - value = _extract_value(key, data, 'spatial_uri') + value = _extract_value(data, 'spatial_uri') if not value: raise toolkit.Invalid('spatial_uri:odsh_spatial_uri_error_label') @@ -115,7 +115,7 @@ def known_spatial_uri(key, data, errors, context): data[('extras', new_index+1, 'value')] = spatial -def _extract_value(key, data, field): +def _extract_value(data, field): key = None for k in data.keys(): if data[k] == field: @@ -123,12 +123,20 @@ def _extract_value(key, data, field): break if key is None: return None - return data[(key[0], key[1], 'value')] +def _set_value(data, field, value): + key = None + for k in data.keys(): + if data[k] == field: + key = k + break + if key is None: + return None + data[(key[0], key[1], 'value')] = value def odsh_validate_extra_date(key, field, data, errors, context): - value = _extract_value(key, data, field) + value = _extract_value(data, field) if not value: # Statistikamt Nord does not always provide temporal_start/end, @@ -137,10 +145,10 @@ def odsh_validate_extra_date(key, field, data, errors, context): raise toolkit.Invalid(field+':odsh_'+field+'_error_label') else: try: - # date.split('T')[0] will yield "2012-01-01" - # no matter if the date is like "2012-01-01" or "2012-01-01T00:00:00" - datetime.datetime.strptime( - value.split('T')[0], '%Y-%m-%d').isoformat() + dt=parse(value, dayfirst=True) + _set_value(data, field, dt.isoformat()) + # datetime.datetime.strptime( + # value.split('T')[0], '%Y-%m-%d').isoformat() except ValueError: raise toolkit.Invalid(field+':odsh_'+field+'_not_date_error_label') @@ -168,7 +176,6 @@ def odsh_tag_string_convert(key, data, errors, context): '''Takes a list of tags that is a comma-separated string (in data[key]) and parses tag names. These are added to the data dict, enumerated. They are also validated.''' - if isinstance(data[key], basestring): tags = [tag.strip() for tag in data[key].split(',')