Refactor configure_exclusions

This commit is contained in:
Thomas Lauf 2018-08-09 21:03:10 +02:00
parent 7fefdf80bd
commit 15bb111171
4 changed files with 34 additions and 14 deletions

View file

@ -80,14 +80,34 @@ class Timew(object):
cmd = (self.timew, ":yes", "config", var, value)
return run_cmd_wait(cmd, env=self.env, input="y\n")
def configure_exclusions(self, start, end):
if isinstance(start, datetime.time) and isinstance(end, datetime.time):
if start > end:
exclusion = "<{:%H:%M:%S} >{:%H:%M:%S}".format(end, start)
else:
exclusion = "{:%H:%M:%S}-{:%H:%M:%S}".format(start, end)
@staticmethod
def _create_exclusion_interval(interval):
if not isinstance(interval, tuple):
raise TypeError("Please specify interval(s) as a tuple or a list of tuples")
if interval[0] is not None and not isinstance(interval[0], datetime.time):
raise TypeError("Start date must be a datetime.time but is {}".format(type(interval[0])))
if interval[1] is not None and not isinstance(interval[1], datetime.time):
raise TypeError("End date must be a datetime.time but is {}".format(type(interval[1])))
if interval[0] is None:
return "<{:%H:%M:%S}".format(interval[1])
if interval[1] is None:
return ">{:%H:%M:%S}".format(interval[0])
if interval[0] > interval[1]:
return "<{:%H:%M:%S} >{:%H:%M:%S}".format(interval[1], interval[0])
return "{:%H:%M:%S}-{:%H:%M:%S}".format(interval[0], interval[1])
def configure_exclusions(self, intervals):
if isinstance(intervals, list):
exclusion = " ".join([self._create_exclusion_interval(interval) for interval in intervals])
else:
exclusion = "{}-{}".format(start, end)
exclusion = self._create_exclusion_interval(intervals)
self.config("exclusions.monday", exclusion)
self.config("exclusions.tuesday", exclusion)

View file

@ -30,7 +30,7 @@ import os
import sys
import unittest
from datetime import datetime, timedelta
from datetime import datetime, timedelta, time
# Ensure python finds the local simpletap module
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
@ -64,11 +64,11 @@ class TestExport(TestCase):
def test_changing_exclusion_does_not_change_flattened_intervals(self):
"""Changing exclusions does not change flattened intervals"""
self.t.configure_exclusions("12:22:44", "13:32:23")
self.t.configure_exclusions((time(12, 22, 44), time(13, 32, 23)))
self.t("track 20160101T102255Z - 20160101T154422Z foo")
self.t.configure_exclusions("12:44:22", "13:23:32")
self.t.configure_exclusions((time(12, 44, 22), time(13, 23, 32)))
self.t("track 20160102T102255Z - 20160102T154422Z bar")
@ -106,7 +106,7 @@ class TestExport(TestCase):
four_hours_before_utc = now_utc - timedelta(hours=4)
five_hours_before_utc = now_utc - timedelta(hours=5)
self.t.configure_exclusions(four_hours_before.time(), three_hours_before.time())
self.t.configure_exclusions((four_hours_before.time(), three_hours_before.time()))
self.t("start {:%Y-%m-%dT%H:%M:%S}Z foo".format(five_hours_before_utc))
@ -122,7 +122,7 @@ class TestExport(TestCase):
expectedStart="{:%Y%m%dT%H%M%S}Z".format(three_hours_before_utc),
expectedTags=["foo"])
self.t.configure_exclusions(three_hours_before.time(), two_hours_before.time())
self.t.configure_exclusions((three_hours_before.time(), two_hours_before.time()))
j = self.t.export()

View file

@ -57,7 +57,7 @@ class TestGaps(TestCase):
def test_single_unobstructed_interval_with_exclusions(self):
"""Add one interval, with exclusions"""
self.t.configure_exclusions(time(18, 0, 0), time(9, 0, 0))
self.t.configure_exclusions((time(18, 0, 0), time(9, 0, 0)))
self.t("track 20160527T100000 - 20160527T140000 foo")

View file

@ -68,7 +68,7 @@ class TestLengthen(TestCase):
four_hours_before_utc = now_utc - timedelta(hours=4)
five_hours_before_utc = now_utc - timedelta(hours=5)
self.t.configure_exclusions(four_hours_before.time(), three_hours_before.time())
self.t.configure_exclusions((four_hours_before.time(), three_hours_before.time()))
self.t("start {:%Y-%m-%dT%H:%M:%S}".format(five_hours_before))