Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@ Changelog
in development
--------------

Fixed
~~~~~

* Fix Type error for ``time_diff`` critera comparison. convert the timediff value as float to match
``timedelta.total_seconds()`` return.

Contributed by @blackstrip

Added
~~~~~

Expand Down
2 changes: 1 addition & 1 deletion st2common/st2common/operators.py
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@ def _timediff(diff_target, period_seconds, operator):
# Note: date_utils.parse uses dateutil.parse which is way more flexible then strptime and
# supports many date formats
diff_target_utc = date_utils.parse(diff_target)
return operator((utc_now - diff_target_utc).total_seconds(), period_seconds)
return operator((utc_now - diff_target_utc).total_seconds(), float(period_seconds))


def timediff_lt(value, criteria_pattern):
Expand Down
32 changes: 32 additions & 0 deletions st2common/tests/unit/test_operators.py
Original file line number Diff line number Diff line change
Expand Up @@ -943,6 +943,23 @@ def test_timediff_lt_fail(self):
"Passed test_timediff_lt with None as criteria_pattern.",
)

def test_timediff_lt_webui_value(self):
op = operators.get_operator("timediff_lt")
self.assertTrue(
op(date_utils.get_datetime_utc_now().isoformat(), "10"),
"Failed test_timediff_lt_webui_value.",
)

def test_timediff_lt_webui_value_fail(self):
op = operators.get_operator("timediff_lt")
self.assertFalse(
op("2014-07-01T00:01:01.000000", "10"), "Passed test_timediff_lt_webui_value."
)
self.assertFalse(
op("2014-07-01T00:01:01.000000", "value_from_webui"),
"Passed test_timediff_lt with Value from WebUI as criteria_pattern.",
)

def test_timediff_gt(self):
op = operators.get_operator("timediff_gt")
self.assertTrue(op("2014-07-01T00:01:01.000000", 1), "Failed test_timediff_gt.")
Expand All @@ -958,6 +975,21 @@ def test_timediff_gt_fail(self):
"Passed test_timediff_gt with None as criteria_pattern.",
)

def test_timediff_gt_webui_value(self):
op = operators.get_operator("timediff_gt")
self.assertTrue(op("2014-07-01T00:01:01.000000", "1"), "Failed test_timediff_gt_webui_value.")

def test_timediff_gt_webui_value_fail(self):
op = operators.get_operator("timediff_gt")
self.assertFalse(
op(date_utils.get_datetime_utc_now().isoformat(), "10"),
"Passed test_timediff_gt_webui_value.",
)
self.assertFalse(
op("2014-07-01T00:01:01.000000", "value_from_webui"),
"Passed test_timediff_gt with Value from WebUI as criteria_pattern.",
)

def test_exists(self):
op = operators.get_operator("exists")
self.assertTrue(op(False, None), "Should return True")
Expand Down