mirror of
https://github.com/GothenburgBitFactory/timewarrior.git
synced 2025-06-26 10:54:28 +02:00
Refactor configure_exclusions
This commit is contained in:
parent
7fefdf80bd
commit
15bb111171
4 changed files with 34 additions and 14 deletions
|
@ -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)
|
||||
|
|
|
@ -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()
|
||||
|
||||
|
|
|
@ -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")
|
||||
|
||||
|
|
|
@ -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))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue