X-Git-Url: https://git.madduck.net/etc/taskwarrior.git/blobdiff_plain/889016582fe4e327b954f3f6959bf6d0fc3304bd..4f562190992dbfb95af3dee41a1ba9b288690536:/tasklib/task.py diff --git a/tasklib/task.py b/tasklib/task.py index dc83e97..0283f6f 100644 --- a/tasklib/task.py +++ b/tasklib/task.py @@ -19,6 +19,8 @@ VERSION_2_1_0 = six.u('2.1.0') VERSION_2_2_0 = six.u('2.2.0') VERSION_2_3_0 = six.u('2.3.0') VERSION_2_4_0 = six.u('2.4.0') +VERSION_2_4_1 = six.u('2.4.1') +VERSION_2_4_2 = six.u('2.4.2') logger = logging.getLogger(__name__) local_zone = tzlocal.get_localzone() @@ -149,6 +151,24 @@ class SerializingObject(object): def normalize_modified(self, value): return self.datetime_normalizer(value) + def serialize_start(self, value): + return self.timestamp_serializer(value) + + def deserialize_start(self, value): + return self.timestamp_deserializer(value) + + def normalize_start(self, value): + return self.datetime_normalizer(value) + + def serialize_end(self, value): + return self.timestamp_serializer(value) + + def deserialize_end(self, value): + return self.timestamp_deserializer(value) + + def normalize_end(self, value): + return self.datetime_normalizer(value) + def serialize_due(self, value): return self.timestamp_serializer(value) @@ -532,7 +552,7 @@ class Task(TaskResource): self.warrior.execute_command([self['uuid'], 'delete']) # Refresh the status again, so that we have updated info stored - self.refresh(only_fields=['status']) + self.refresh(only_fields=['status', 'start', 'end']) def start(self): if not self.saved: @@ -549,7 +569,7 @@ class Task(TaskResource): self.warrior.execute_command([self['uuid'], 'start']) # Refresh the status again, so that we have updated info stored - self.refresh(only_fields=['status']) + self.refresh(only_fields=['status', 'start']) def done(self): if not self.saved: @@ -566,7 +586,7 @@ class Task(TaskResource): self.warrior.execute_command([self['uuid'], 'done']) # Refresh the status again, so that we have updated info stored - self.refresh(only_fields=['status']) + self.refresh(only_fields=['status', 'start', 'end']) def save(self): if self.saved and not self.modified: @@ -870,9 +890,10 @@ class TaskWarrior(object): def enforce_recurrence(self): # Run arbitrary report command which will trigger generation # of recurrent tasks. - # TODO: Make a version dependant enforcement once - # TW-1531 is handled - self.execute_command(['next'], allow_failure=False) + + # Only necessary for TW up to 2.4.1, fixed in 2.4.2. + if self.version < VERSION_2_4_2: + self.execute_command(['next'], allow_failure=False) def filter_tasks(self, filter_obj): self.enforce_recurrence()