Skip to content

Commit

Permalink
Only parse dates if key is `time' (#740)
Browse files Browse the repository at this point in the history
For "BetweenExpression" only interpret values as dates when search term is
"time". Otherwise assume numeric values.
  • Loading branch information
Kirill888 committed May 30, 2019
1 parent 98cf9ba commit 719a687
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
5 changes: 4 additions & 1 deletion datacube/ui/expression.py
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,10 @@ def query_repr(self, get_field):
return get_field(self.field_name).between(search_range.begin, search_range.end)

def as_query(self):
return {self.field_name: _time_to_search_dims([self.low_value.value, self.high_value.value])}
if self.field_name == 'time':
return {self.field_name: _time_to_search_dims([self.low_value.value, self.high_value.value])}
else:
return {self.field_name: Range(self.low_value.as_value(), self.high_value.as_value())}


class ExpressionList(List):
Expand Down
21 changes: 21 additions & 0 deletions tests/ui/test_expression_parsing.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from datacube.ui import parse_expressions
from datacube.model import Range
from datetime import datetime


def test_between_expression():
q = parse_expressions('time in [2014, 2015]')
assert 'time' in q
r = q['time']
assert isinstance(r, Range)
assert isinstance(r.begin, datetime)
assert isinstance(r.end, datetime)

for k in ('lon', 'lat', 'x', 'y'):
q = parse_expressions('{} in [10, 11.3]'.format(k))
assert k in q
r = q[k]
assert isinstance(r, Range)
assert isinstance(r.begin, float)
assert isinstance(r.end, float)
assert r == Range(10, 11.3)

0 comments on commit 719a687

Please sign in to comment.