From 0fff0143079e6693ea6f99ce6b81b03bbc683903 Mon Sep 17 00:00:00 2001 From: Aaron Gutierrez Date: Thu, 6 Aug 2015 23:16:42 -0700 Subject: [PATCH] Show subtasks in details view --- cmdasana.py | 13 ++++++++++--- ui.py | 30 +++++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/cmdasana.py b/cmdasana.py index 976e28a..e88c8cd 100755 --- a/cmdasana.py +++ b/cmdasana.py @@ -270,10 +270,11 @@ class CmdAsana: def runInThread(): task = self.client.tasks.find_by_id(task_id) stories = self.client.stories.find_by_task(task_id) - update(task, stories) + subtasks = self.client.tasks.subtasks(task_id) + update(task, stories, subtasks) - def update(task, stories): - task_details = ui.TaskDetails(task, stories) + def update(task, stories, subtasks): + task_details = ui.TaskDetails(task, stories, subtasks) self.connectDetailsSignals(task_details) self.replaceBody(task_details) @@ -301,6 +302,9 @@ class CmdAsana: 'updatetask', 'usertypeahead', 'assigntask', + 'complete', + 'newtask', + 'details', ]) urwid.register_signal(ui.AssigneeTypeAhead, [ @@ -339,6 +343,9 @@ class CmdAsana: urwid.connect_signal(task_details, 'updatetask', self.updateTask) urwid.connect_signal(task_details, 'usertypeahead', self.userTypeAhead) urwid.connect_signal(task_details, 'assigntask', self.assignTask) + urwid.connect_signal(task_details, 'complete', self.completeTask) + urwid.connect_signal(task_details, 'newtask', self.newTask) + urwid.connect_signal(task_details, 'details', self.showDetails) def handleInput(self, key): if key in ('q', 'Q'): diff --git a/ui.py b/ui.py index e78d1e2..3e0e930 100644 --- a/ui.py +++ b/ui.py @@ -265,7 +265,7 @@ class AssigneeTypeAhead(urwid.Pile): self.edit.set_edit_text(user['name']) class TaskDetails(urwid.ListBox): - def __init__(self, task, stories): + def __init__(self, task, stories, subtasks): self.task = task self.stories = stories @@ -287,6 +287,19 @@ class TaskDetails(urwid.ListBox): projects = [ProjectIcon(project, self.loadProject) for project in task['projects']] + if task['parent'] != None: + parent = TaskEdit(task['parent']) + urwid.connect_signal(parent, 'updatetask', self.updateSubtask) + urwid.connect_signal(parent, 'details', self.showDetails) + projects.append(parent) + + all_subtasks = [t for t in subtasks] + subtask_list = TaskList(all_subtasks) + urwid.connect_signal(subtask_list, 'complete', self.completeTask) + urwid.connect_signal(subtask_list, 'newtask', self.newTask) + urwid.connect_signal(subtask_list, 'updatetask', self.updateSubtask) + urwid.connect_signal(subtask_list, 'details', self.showDetails) + body = projects + \ [ urwid.Divider('='), @@ -295,6 +308,8 @@ class TaskDetails(urwid.ListBox): urwid.Divider('-'), self.description_edit, urwid.Divider('-'), + urwid.BoxAdapter(subtask_list, len(all_subtasks)), + urwid.Divider('-'), ] + \ [urwid.Text('[' + story['created_by']['name'] + '] ' + \ story['text']) for story in stories] + \ @@ -302,6 +317,19 @@ class TaskDetails(urwid.ListBox): super(TaskDetails, self).__init__(body) + def completeTask(self, task_id): + urwid.emit_signal(self, 'complete', task_id) + del self.body[self.focus_position] + + def newTask(self, task_after_id=None): + urwid.emit_signal(self, 'newtask', task_after_id) + + def updateSubtask(self, task_id, name): + urwid.emit_signal(self, 'updatetask', task_id, name) + + def showDetails(self, task_id): + urwid.emit_signal(self, 'details', task_id) + def keypress(self, size, key): key = super(TaskDetails, self).keypress(size, key)