From: Tomas Babej Date: Tue, 7 Apr 2015 16:34:34 +0000 (+0200) Subject: Add pirate-enabled version of the hook X-Git-Url: https://git.madduck.net/etc/taskwarrior.git/commitdiff_plain/0899c6516bd9bf8fdd4bd973106eaa1ffcf67667?ds=sidebyside;hp=-c Add pirate-enabled version of the hook --- 0899c6516bd9bf8fdd4bd973106eaa1ffcf67667 diff --git a/pirate_add_shift_recurrence.py b/pirate_add_shift_recurrence.py new file mode 100644 index 0000000..723dfdb --- /dev/null +++ b/pirate_add_shift_recurrence.py @@ -0,0 +1,28 @@ +#!/usr/bin/python + +import sys +import os +from tasklib.task import Task, TaskWarrior + +time_attributes = ('wait', 'until', 'scheduled') + +def is_new_local_recurrence_child_task(task): + # Do not affect tasks not spun by recurrence + if not task['parent']: + return False + + # Newly created recurrence tasks actually have + # modified field copied from the parent, thus + # older than entry field (until their ID is generated) + if (task['modified'] - task['entry']).total_seconds() < 0: + return True + +tw = TaskWarrior(data_location=os.path.dirname(os.path.dirname(sys.argv[0]))) + +def hook_shift_recurrence(task): + if is_new_local_recurrence_child_task(task): + parent = tw.tasks.get(uuid=task['parent']) + parent_due_shift = task['due'] - parent['due'] + for attr in time_attributes: + if parent[attr]: + task[attr] = parent[attr] + parent_due_shift