Show subtasks in details view
This commit is contained in:
13
cmdasana.py
13
cmdasana.py
@@ -270,10 +270,11 @@ class CmdAsana:
|
|||||||
def runInThread():
|
def runInThread():
|
||||||
task = self.client.tasks.find_by_id(task_id)
|
task = self.client.tasks.find_by_id(task_id)
|
||||||
stories = self.client.stories.find_by_task(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):
|
def update(task, stories, subtasks):
|
||||||
task_details = ui.TaskDetails(task, stories)
|
task_details = ui.TaskDetails(task, stories, subtasks)
|
||||||
self.connectDetailsSignals(task_details)
|
self.connectDetailsSignals(task_details)
|
||||||
self.replaceBody(task_details)
|
self.replaceBody(task_details)
|
||||||
|
|
||||||
@@ -301,6 +302,9 @@ class CmdAsana:
|
|||||||
'updatetask',
|
'updatetask',
|
||||||
'usertypeahead',
|
'usertypeahead',
|
||||||
'assigntask',
|
'assigntask',
|
||||||
|
'complete',
|
||||||
|
'newtask',
|
||||||
|
'details',
|
||||||
])
|
])
|
||||||
|
|
||||||
urwid.register_signal(ui.AssigneeTypeAhead, [
|
urwid.register_signal(ui.AssigneeTypeAhead, [
|
||||||
@@ -339,6 +343,9 @@ class CmdAsana:
|
|||||||
urwid.connect_signal(task_details, 'updatetask', self.updateTask)
|
urwid.connect_signal(task_details, 'updatetask', self.updateTask)
|
||||||
urwid.connect_signal(task_details, 'usertypeahead', self.userTypeAhead)
|
urwid.connect_signal(task_details, 'usertypeahead', self.userTypeAhead)
|
||||||
urwid.connect_signal(task_details, 'assigntask', self.assignTask)
|
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):
|
def handleInput(self, key):
|
||||||
if key in ('q', 'Q'):
|
if key in ('q', 'Q'):
|
||||||
|
|||||||
30
ui.py
30
ui.py
@@ -265,7 +265,7 @@ class AssigneeTypeAhead(urwid.Pile):
|
|||||||
self.edit.set_edit_text(user['name'])
|
self.edit.set_edit_text(user['name'])
|
||||||
|
|
||||||
class TaskDetails(urwid.ListBox):
|
class TaskDetails(urwid.ListBox):
|
||||||
def __init__(self, task, stories):
|
def __init__(self, task, stories, subtasks):
|
||||||
self.task = task
|
self.task = task
|
||||||
self.stories = stories
|
self.stories = stories
|
||||||
|
|
||||||
@@ -287,6 +287,19 @@ class TaskDetails(urwid.ListBox):
|
|||||||
projects = [ProjectIcon(project, self.loadProject)
|
projects = [ProjectIcon(project, self.loadProject)
|
||||||
for project in task['projects']]
|
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 + \
|
body = projects + \
|
||||||
[
|
[
|
||||||
urwid.Divider('='),
|
urwid.Divider('='),
|
||||||
@@ -295,6 +308,8 @@ class TaskDetails(urwid.ListBox):
|
|||||||
urwid.Divider('-'),
|
urwid.Divider('-'),
|
||||||
self.description_edit,
|
self.description_edit,
|
||||||
urwid.Divider('-'),
|
urwid.Divider('-'),
|
||||||
|
urwid.BoxAdapter(subtask_list, len(all_subtasks)),
|
||||||
|
urwid.Divider('-'),
|
||||||
] + \
|
] + \
|
||||||
[urwid.Text('[' + story['created_by']['name'] + '] ' + \
|
[urwid.Text('[' + story['created_by']['name'] + '] ' + \
|
||||||
story['text']) for story in stories] + \
|
story['text']) for story in stories] + \
|
||||||
@@ -302,6 +317,19 @@ class TaskDetails(urwid.ListBox):
|
|||||||
|
|
||||||
super(TaskDetails, self).__init__(body)
|
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):
|
def keypress(self, size, key):
|
||||||
key = super(TaskDetails, self).keypress(size, key)
|
key = super(TaskDetails, self).keypress(size, key)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user