def execute(task, user, verbose, filename, frontload=0):
due_date = parse(task['due_date']).date()
early = string_to_relativedelta(task['early'])
todoist_project = None
new_task = task.copy()
rewrite = False
interval = string_to_relativedelta(task['interval'])
while date.today() + relativedelta(days=frontload) >= due_date - early:
if todoist_project is None:
todoist_project = user.get_project(task['project'])
if task['interval'] is None:
# One time task
for t in task['tasks']:
todoist_project.add_task(t, date=task['due_date'], priority=task['priority'])
if verbose: print('-> Added new task \'{}\' with due date {}.'
.format(t, task['due_date']), flush=True)
delete(task, filename, verbose)
break
else:
# Recurring task
todoist_project.add_task(new_task['tasks'][new_task['index']],
date=new_task['due_date'], priority=task['priority'])
if verbose: print('-> Added new task \'{}\' with due date {}.'
.format(new_task['tasks'][new_task['index']], new_task['due_date']), flush=True)
# incrementing values
if interval.days == -1: # last day of month
due_date += relativedelta(days=+1)
due_date += interval
new_task['due_date'] = due_date.isoformat()
new_task['index'] = (new_task['index'] + 1) % len(new_task['tasks'])
rewrite = True
if rewrite: write(new_task, filename, verbose)
评论列表
文章目录