diff --git a/README.rst b/README.rst index 6e9c68e..b1ad500 100644 --- a/README.rst +++ b/README.rst @@ -28,6 +28,9 @@ CLI asana list sections --workspace="Personal Projects" --project="Test" asana list tasks --workspace="Personal Projects" --project="Test" --section="Column 1" + asana show tasks --workspace="Personal Projects" --project="Test" --section="Column 1" + asana show tasks --workspace="Personal Projects" --project="Test" --section="Column 1" --subtasks + asana delete tasks --workspace="Personal Projects" --project="Test" --section="Column 1" asana mark tasks --workspace="Personal Projects" --project="Test" --section="Column 1" --completed diff --git a/asana_cli/cli.py b/asana_cli/cli.py index 65769a6..fa36b01 100644 --- a/asana_cli/cli.py +++ b/asana_cli/cli.py @@ -122,6 +122,12 @@ def get_tasks(project, section=None): tasks = get_paginated_json(f"https://app.asana.com/api/1.0/projects/{project_gid}/tasks?opt_expand=completed,memberships") return tasks +def get_task(gid): + return get(f"https://app.asana.com/api/1.0/tasks/{gid}") + +def get_subtasks(gid): + return get_paginated_json(f"https://app.asana.com/api/1.0/tasks/{gid}/subtasks") + @click.group() def main(): """ @@ -135,6 +141,10 @@ def main(): asana list sections --workspace="Personal Projects" --project="Test" asana list tasks --workspace="Personal Projects" --project="Test" --section="Column 1" + \b + asana show tasks --workspace="Personal Projects" --project="Test" --section="Column 1" + asana show tasks --workspace="Personal Projects" --project="Test" --section="Column 1" --subtasks + \b asana delete tasks --workspace="Personal Projects" --project="Test" --section="Column 1" @@ -190,6 +200,32 @@ def list_tasks(workspace, project, section): for task in tasks: print(json.dumps(task)) +# --------------------------------- +# show + +@main.group(name='show') +def show_(): + pass + +@show_.command(name='tasks') +@click.option('--workspace', required=True) +@click.option('--project', required=True) +@click.option('--section') +@click.option('--subtasks', is_flag=True, default=False) +def show_tasks(workspace, project, section, subtasks): + workspace_obj = get_workspace(workspace) + project_obj = get_project(project, workspace=workspace_obj) + section_obj = get_section(section, project=project_obj) if section else None + tasks = get_tasks(project_obj, section=section_obj) + for task_obj in tasks: + task = get_task(task_obj['gid']) + if subtasks: + task['subtasks'] = [] + for subtask_obj in get_subtasks(task_obj['gid']): + task['subtasks'].append(get_task(subtask_obj['gid'])) + + print(json.dumps(task)) + # --------------------------------- # move diff --git a/asana_cli/version.py b/asana_cli/version.py index ffcc925..156d6f9 100644 --- a/asana_cli/version.py +++ b/asana_cli/version.py @@ -1 +1 @@ -__version__ = '0.0.3' +__version__ = '0.0.4'