From 6b348c307ff1589e1846b9f554877f7badeb33c3 Mon Sep 17 00:00:00 2001 From: Thomas NOEL Date: Wed, 5 Dec 2018 17:00:22 +0100 Subject: [PATCH] draft #28639 --- tests/test_formdata.py | 5 +++++ wcs/variables.py | 25 +++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/tests/test_formdata.py b/tests/test_formdata.py index a6dd7a57..cdf1a468 100644 --- a/tests/test_formdata.py +++ b/tests/test_formdata.py @@ -676,7 +676,12 @@ def test_lazy_map_variable(pub, variable_test_data): pub.substitutions.feed(formdata) for mode in (None, 'lazy'): assert WorkflowStatusItem.compute('=form_var_map') == '2;4' + assert WorkflowStatusItem.compute('{{ form_var_map }}') == '2;4' assert WorkflowStatusItem.compute('=form_var_map.split(";")[0]') == '2' + assert WorkflowStatusItem.compute('=form_var_map_lat') == '2' + assert WorkflowStatusItem.compute('{{ form_var_map_lat }}') == '2' + assert WorkflowStatusItem.compute('=form_var_map_lon') == '4' + assert WorkflowStatusItem.compute('{{ form_var_map_lon }}') == '4' formdata.data['7'] = None formdata.store() diff --git a/wcs/variables.py b/wcs/variables.py index b3e045cd..16442aee 100644 --- a/wcs/variables.py +++ b/wcs/variables.py @@ -307,6 +307,8 @@ class LazyFormDataVar(object): if field.key == 'date': return LazyFieldVarDate(self.data, field, self.formdata) + if field.key == 'map': + return LazyFieldVarMap(self.data, field, self.formdata) return LazyFieldVar(self.data, field, self.formdata) @@ -438,6 +440,29 @@ class LazyFieldVarDate(LazyFieldVar): return self.get_raw().tm_yday +class LazyFieldVarMap(LazyFieldVar): + @property + def latlng(self): + value = self.data.get(self.field.id) + if not value or ';' not in value: + return {'lat': '', 'lon': ''} + lat, lon = value.split(';') + try: + lat = float(lat) + lon = float(lon) + except ValueError: + return {'lat': '', 'lon': ''} + return {'lat': lat, 'lon': lon} + + @property + def lat(self): + return self.latlng.get('lat') + + @property + def lon(self): + return self.latlng.get('lon') + + class LazyUser(object): def __init__(self, user): self.user = user -- 2.19.2