From 885bad2fa2d22fccc179cb699da65c96da7499e0 Mon Sep 17 00:00:00 2001 From: Marcel Kapfer Date: Fri, 25 Nov 2022 22:38:29 +0100 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=9A=B8=20[todoist2org]=20Display=20wa?= =?UTF-8?q?rning=20about=20missing=20recurrence=20information?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- todoist2org/todoist2org.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/todoist2org/todoist2org.py b/todoist2org/todoist2org.py index f82f3ab..072c9a8 100644 --- a/todoist2org/todoist2org.py +++ b/todoist2org/todoist2org.py @@ -199,6 +199,16 @@ def parse_projects(): parent_project_name = parse_project(project, parent_project_name) +def print_warning(): + """Print warning about missing recurrences.""" + print( + "Please keep in mind that this script does not support recurring " + + "items and will only schedule them for next occurence. " + + "If a task is recurring then the description will include a note " + + "'(recurring)'." + ) + + def main(): """Run the program.""" load_dotenv() @@ -207,6 +217,7 @@ def main(): create_output_dir() parse_projects() print_stats() + print_warning() if __name__ == "__main__": From c133b7068f80a904a447b2b7dfe732d7cda121fa Mon Sep 17 00:00:00 2001 From: Marcel Kapfer Date: Fri, 25 Nov 2022 22:39:37 +0100 Subject: [PATCH 2/2] =?UTF-8?q?=E2=9C=A8=20[todoist2org]=20Add=20project?= =?UTF-8?q?=20as=20category=20and=20section=20as=20tag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- todoist2org/todoist2org.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/todoist2org/todoist2org.py b/todoist2org/todoist2org.py index 072c9a8..0a871c9 100644 --- a/todoist2org/todoist2org.py +++ b/todoist2org/todoist2org.py @@ -57,7 +57,7 @@ def parse_comments(task_id): return output -def parse_task(task, subtask): +def parse_task(task, subtask, additional_labels): """Print a task.""" output = [] if subtask: @@ -65,9 +65,10 @@ def parse_task(task, subtask): else: headline = f"** TODO {task.content}" - labels = task.labels + labels = [*additional_labels, *task.labels] if len(labels) > 0: - headline += " :" + ":".join(labels) + ":" + labels_string = " :" + ":".join(labels) + ":" + headline += labels_string.replace("-", "_") output.append(headline) @@ -110,7 +111,7 @@ def parse_task(task, subtask): return output -def parse_sections(project_id, tasks): +def parse_sections(project_id, tasks, additional_labels): """Print a section.""" output = [] sections = api.get_sections(project_id=project_id) @@ -119,6 +120,8 @@ def parse_sections(project_id, tasks): for section in sections: output.append(f"* {section.name}") output.append("") + section_slug = get_filename(section.name, False) + additional_labels.append(section_slug) subtask = False for task in tasks: if task.section_id == section.id: @@ -127,7 +130,7 @@ def parse_sections(project_id, tasks): subtask = True if subtask and not task.parent_id: subtask = False - output.extend(parse_task(task, subtask)) + output.extend(parse_task(task, subtask, additional_labels)) return output @@ -135,6 +138,8 @@ def parse_sections(project_id, tasks): def parse_project(project, parent_project_name=""): """Parse a project.""" filename = get_filename(project.name) + project_slug = get_filename(project.name, False) + additional_lables = [f"@{project_slug}"] content = [] output_dir = os.environ.get("OUTPUT_DIR", "./output") @@ -166,9 +171,10 @@ def parse_project(project, parent_project_name=""): subtask = True if subtask and not task.parent_id: subtask = False - content.extend(parse_task(task, subtask)) - content.extend(parse_sections(project.id, tasks)) + content.extend(parse_task(task, subtask, additional_lables)) + + content.extend(parse_sections(project.id, tasks, additional_lables)) write_file(path, content) return parent_project_name