Added more fine grain controls for input
This commit is contained in:
@@ -14,19 +14,75 @@ def get_tasks_for_project(project):
|
|||||||
return things.tasks(project=project["uuid"], type="to-do")
|
return things.tasks(project=project["uuid"], type="to-do")
|
||||||
|
|
||||||
|
|
||||||
|
def set_default_reclaim_values(things_task, reclaim_task):
|
||||||
|
reclaim_task.min_work_duration = 0.5
|
||||||
|
reclaim_task.max_work_duration = 2
|
||||||
|
reclaim_task.duration = 2
|
||||||
|
if things_task.get("start_date") is not None:
|
||||||
|
reclaim_task.start_date = datetime.strptime(
|
||||||
|
f"{things_task['start_date']} 08:00", "%Y-%m-%d %H:%M")
|
||||||
|
if things_task.get("deadline") is not None:
|
||||||
|
reclaim_task.due_date = datetime.strptime(
|
||||||
|
f"{things_task['deadline']} 22:00", "%Y-%m-%d %H:%M")
|
||||||
|
|
||||||
|
|
||||||
|
def calculate_time_on_unit(tag_value) -> float:
|
||||||
|
value, unit = tag_value.split(" ")
|
||||||
|
match unit:
|
||||||
|
case 'hours' | 'hrs' | 'hour' | 'hr' | "h":
|
||||||
|
return int(value)
|
||||||
|
case "mins" | "min" | "minutes" | "minute" | "m":
|
||||||
|
return int(value) / 60
|
||||||
|
|
||||||
|
|
||||||
|
def map_tag_values(things_task, reclaim_task):
|
||||||
|
tags_dict = {k: v for (k, v) in [tag.split(": ")
|
||||||
|
for tag in things_task["tags"]]}
|
||||||
|
for tag in tags_dict:
|
||||||
|
match tag:
|
||||||
|
case "MinTime":
|
||||||
|
reclaim_task.min_work_duration = calculate_time_on_unit(
|
||||||
|
tags_dict[tag])
|
||||||
|
case "MaxTime":
|
||||||
|
reclaim_task.max_work_duration = calculate_time_on_unit(
|
||||||
|
tags_dict[tag])
|
||||||
|
case "EstimatedTime":
|
||||||
|
reclaim_task.duration = calculate_time_on_unit(tags_dict[tag])
|
||||||
|
case "DeadlineTime":
|
||||||
|
if things_task.get('deadline') is not None:
|
||||||
|
reclaim_task.due_date = datetime.strptime(
|
||||||
|
f"{things_task['deadline']} {tags_dict[tag]}", "%Y-%m-%d %H:%M")
|
||||||
|
case "StartTime":
|
||||||
|
if things_task.get('start_date') is not None:
|
||||||
|
reclaim_task.start_date = datetime.strptime(
|
||||||
|
f"{things_task['start_date']} {tags_dict[tag]}", "%Y-%m-%d %H:%M")
|
||||||
|
case _:
|
||||||
|
print(f"Tag {tag} not recognized")
|
||||||
|
|
||||||
|
|
||||||
def things_to_reclaim(things_task, project_title):
|
def things_to_reclaim(things_task, project_title):
|
||||||
with ReclaimTask() as reclaim_task:
|
with ReclaimTask() as reclaim_task:
|
||||||
reclaim_task.name = "{} {}".format(project_title, things_task["title"])
|
reclaim_task.name = "{} {}".format(project_title, things_task["title"])
|
||||||
reclaim_task.start_date = datetime.strptime(
|
set_default_reclaim_values(
|
||||||
things_task["start_date"], "%Y-%m-%d")
|
things_task=things_task, reclaim_task=reclaim_task)
|
||||||
reclaim_task.due_date = datetime.strptime(
|
map_tag_values(things_task=things_task, reclaim_task=reclaim_task)
|
||||||
things_task["deadline"], "%Y-%m-%d")
|
reclaim_task_pretty_print(reclaim_task)
|
||||||
|
|
||||||
|
|
||||||
def things_task_pretty_print(task, project_title):
|
def things_task_pretty_print(task, project_title):
|
||||||
print(f"\tTitle: {project_title} {task['title']}")
|
print(f"\tTitle: {project_title} {task['title']}")
|
||||||
print(f"\tStart date: {task['start_date']}")
|
print(f"\tStart date: {task['start_date']}")
|
||||||
print(f"\tDeadline: {task['deadline']}")
|
print(f"\tDeadline: {task['deadline']}")
|
||||||
|
print(f"\tTags: {task['tags']}")
|
||||||
|
|
||||||
|
|
||||||
|
def reclaim_task_pretty_print(task):
|
||||||
|
print(f"\tTitle: {task.name}")
|
||||||
|
print(f"\tStart date: {task.start_date}")
|
||||||
|
print(f"\tDeadline: {task.due_date}")
|
||||||
|
print(f"\tMin work duration: {task.min_work_duration}")
|
||||||
|
print(f"\tMax work duration: {task.max_work_duration}")
|
||||||
|
print(f"\tDuration: {task.duration}")
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
@@ -39,7 +95,7 @@ def main():
|
|||||||
project["title"], things_task["title"])
|
project["title"], things_task["title"])
|
||||||
if full_task_name not in reclaim_task_names:
|
if full_task_name not in reclaim_task_names:
|
||||||
print(f"Creating task {full_task_name} in Reclaim")
|
print(f"Creating task {full_task_name} in Reclaim")
|
||||||
things_task_pretty_print(things_task, project["title"])
|
# things_task_pretty_print(things_task, project["title"])
|
||||||
things_to_reclaim(things_task, project["title"])
|
things_to_reclaim(things_task, project["title"])
|
||||||
else:
|
else:
|
||||||
print(f"Task {things_task['title']} already exists in Reclaim")
|
print(f"Task {things_task['title']} already exists in Reclaim")
|
||||||
|
|||||||
Reference in New Issue
Block a user