#!/usr/bin/python import sys 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 task = Task.from_input() tw = TaskWarrior() 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 print task.export_data()