geolocation: record LoggedError on normalize error (#41614)

This commit is contained in:
Lauréline Guérin 2021-01-08 15:36:28 +01:00
parent 88a6d5ae9e
commit 4118cee58e
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 17 additions and 3 deletions

View File

@ -3142,7 +3142,9 @@ def test_geolocate_image(pub):
assert formdata.geolocations == {}
def test_geolocate_map(pub):
def test_geolocate_map(two_pubs):
if two_pubs.is_using_postgresql():
two_pubs.loggederror_class.wipe()
formdef = FormDef()
formdef.name = 'baz'
formdef.geolocations = {'base': 'bla'}
@ -3155,7 +3157,7 @@ def test_geolocate_map(pub):
formdata.data = {'2': '48.8337085;2.3233693'}
formdata.just_created()
formdata.store()
pub.substitutions.feed(formdata)
two_pubs.substitutions.feed(formdata)
item = GeolocateWorkflowStatusItem()
item.method = 'map_variable'
@ -3171,6 +3173,18 @@ def test_geolocate_map(pub):
item.perform(formdata)
assert formdata.geolocations == {}
# invalid data
formdata.geolocations = None
formdata.data = {'2': '48.8337085'}
item.map_variable = '=form_var_map'
if two_pubs.is_using_postgresql():
assert two_pubs.loggederror_class.count() == 1
logged_error = two_pubs.loggederror_class.select()[0]
assert logged_error.summary == 'error geolocating from map variable'
assert logged_error.formdata_id == str(formdata.id)
assert logged_error.exception_class == 'ValueError'
assert logged_error.exception_message == 'not enough values to unpack (expected 2, got 1)'
def test_geolocate_overwrite(pub):
formdef = FormDef()

View File

@ -157,7 +157,7 @@ class GeolocateWorkflowStatusItem(WorkflowStatusItem):
lat, lon = str(value).split(';')
lat_lon = normalize_geolocation({'lon': lon, 'lat': lat})
except Exception as e:
get_logger().error('error geolocating from map variable [%r]', e)
get_publisher().record_error(_('error geolocating from map variable'), formdata=formdata, exception=e)
return
return lat_lon