diff --git a/ckanext/odsh/validation.py b/ckanext/odsh/validation.py index 14151edb6910e859fd6f7294376f70af70805f55..29eddfd91751082b6198b9ea2346524f9829a6d8 100644 --- a/ckanext/odsh/validation.py +++ b/ckanext/odsh/validation.py @@ -224,18 +224,22 @@ def known_spatial_uri(key, data, errors, context): not_found = True spatial_text = str() spatial = str() - with open(mapping_path, newline='') as mapping_file: - cr = csv.reader(mapping_file, delimiter="\t") - for row in cr: - if row[0] == value: - not_found = False - spatial_text = row[1] - loaded = json.loads(row[2]) - spatial = json.dumps(loaded['geometry']) - break - if not_found: - raise toolkit.Invalid( - 'spatial_uri: uri unknown') + + try: + with open(mapping_path, newline='') as mapping_file: + cr = csv.reader(mapping_file, delimiter="\t") + for row in cr: + if row and len(row) > 2 and row[0] == value: + not_found = False + spatial_text = row[1] + loaded = json.loads(row[2]) + spatial = json.dumps(loaded.get('geometry', {})) + break + if not_found: + raise toolkit.Invalid('spatial_uri: uri unknown') + except (IOError, json.decoder.JSONDecodeError, KeyError) as e: + log.error(f"Error processing spatial mapping: {e}") + raise toolkit.Invalid("Error processing spatial mapping") new_index = next_extra_index(data)