Name and description can be edited from details view

Closes #42223443476018 #42238129502571
This commit is contained in:
2015-07-26 14:16:47 -07:00
parent e8b65a5269
commit d4722fc6ac
2 changed files with 69 additions and 10 deletions

View File

@@ -130,6 +130,9 @@ class CmdAsana:
def updateTask(self, task_id, name): def updateTask(self, task_id, name):
self.client.tasks.update(task_id, name=name) self.client.tasks.update(task_id, name=name)
def updateDetails(self, task_id, details):
self.client.tasks.update(task_id, notes=details)
def addComment(self, task_id, comment): def addComment(self, task_id, comment):
self.client.stories.create_on_task(task_id, {"text": comment}) self.client.stories.create_on_task(task_id, {"text": comment})
@@ -178,8 +181,7 @@ class CmdAsana:
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)
task_details = ui.TaskDetails(task, stories) task_details = ui.TaskDetails(task, stories)
urwid.connect_signal(task_details, 'comment', self.addComment) self.connectDetailsSignals(task_details)
urwid.connect_signal(task_details, 'loadproject', self.showProject)
self.replaceBody(task_details) self.replaceBody(task_details)
def registerSignals(self): def registerSignals(self):
@@ -187,18 +189,28 @@ class CmdAsana:
'complete', 'complete',
'newtask', 'newtask',
'updatetask', 'updatetask',
'details' 'details',
]) ])
urwid.register_signal(ui.TaskEdit, [ urwid.register_signal(ui.TaskEdit, [
'complete', 'complete',
'newtask', 'newtask',
'updatetask', 'updatetask',
'details' 'details',
])
urwid.register_signal(ui.TaskDetails, [
'comment',
'loadproject',
'updatedescription',
'updatetask',
]) ])
urwid.register_signal(ui.TaskDetails, ['comment', 'loadproject'])
urwid.register_signal(ui.CommentEdit, ['comment']) urwid.register_signal(ui.CommentEdit, ['comment'])
urwid.register_signal(ui.DescriptionEdit, ['updatedescription'])
urwid.register_signal(ui.TaskNameEdit, 'updatetask')
urwid.register_signal(ui.WorkspaceMenu, 'click') urwid.register_signal(ui.WorkspaceMenu, 'click')
urwid.register_signal(ui.ProjectList, 'loadproject') urwid.register_signal(ui.ProjectList, 'loadproject')
@@ -215,6 +227,12 @@ class CmdAsana:
urwid.connect_signal(task_list, 'updatetask', self.updateTask) urwid.connect_signal(task_list, 'updatetask', self.updateTask)
urwid.connect_signal(task_list, 'details', self.showDetails) urwid.connect_signal(task_list, 'details', self.showDetails)
def connectDetailsSignals(self, task_details):
urwid.connect_signal(task_details, 'comment', self.addComment)
urwid.connect_signal(task_details, 'loadproject', self.showProject)
urwid.connect_signal(task_details, 'updatedescription', self.updateDetails)
urwid.connect_signal(task_details, 'updatetask', self.updateTask)
def handleInput(self, key): def handleInput(self, key):
if key in ('q', 'Q'): if key in ('q', 'Q'):
raise urwid.ExitMainLoop() raise urwid.ExitMainLoop()

51
ui.py
View File

@@ -10,6 +10,7 @@ palette = [
('selected', 'standout', ''), ('selected', 'standout', ''),
('selected workspace', 'standout,bold', ''), ('selected workspace', 'standout,bold', ''),
('header', 'bold,light green', ''), ('header', 'bold,light green', ''),
('secondary', 'light gray', ''),
('task', 'light green', ''), ('task', 'light green', ''),
('section', 'white', 'dark green'), ('section', 'white', 'dark green'),
('workspace', 'white', 'dark blue'), ('workspace', 'white', 'dark blue'),
@@ -193,13 +194,40 @@ class TaskEdit(urwid.Edit):
class CommentEdit(urwid.Edit): class CommentEdit(urwid.Edit):
def __init__(self, task): def __init__(self, task):
self.task = task self.task = task
super(CommentEdit, self).__init__('Add a comment:\n') super(CommentEdit, self).__init__(('secondary', 'Add a comment:\n'))
def keypress(self, size, key): def keypress(self, size, key):
if key != 'enter': if key != 'enter':
return super(CommentEdit, self).keypress(size, key) return super(CommentEdit, self).keypress(size, key)
urwid.emit_signal(self, 'comment', self.task['id'], self.edit_text) urwid.emit_signal(self, 'comment', self.task['id'], self.edit_text)
class TaskNameEdit(urwid.Edit):
def __init__(self, task):
self.task = task
super(TaskNameEdit, self).__init__(('secondary',
'#' + str(task['id']) + " "),
task['name'])
def keypress(self, size, key):
if key in ('enter', 'esc', 'up', 'down'):
if (self.edit_text != self.task['name']):
urwid.emit_signal(self, 'updatetask', self.task['id'],
self.edit_text)
return super(TaskNameEdit, self).keypress(size, key)
class DescriptionEdit(urwid.Edit):
def __init__(self, task):
self.task = task
super(DescriptionEdit, self).__init__(('secondary', 'Description:\n'),
task['notes'],
multiline=True)
def keypress(self, size, key):
if key != 'esc':
return super(DescriptionEdit, self).keypress(size, key)
urwid.emit_signal(self, 'updatedescription', self.task['id'],
self.edit_text)
class TaskDetails(urwid.Pile): class TaskDetails(urwid.Pile):
def __init__(self, task, stories): def __init__(self, task, stories):
self.task = task self.task = task
@@ -208,23 +236,30 @@ class TaskDetails(urwid.Pile):
comment_edit = CommentEdit(task) comment_edit = CommentEdit(task)
urwid.connect_signal(comment_edit, 'comment', self.comment) urwid.connect_signal(comment_edit, 'comment', self.comment)
description_edit = DescriptionEdit(task)
urwid.connect_signal(description_edit, 'updatedescription',
self.updateDescription)
task_name_edit = TaskNameEdit(task)
urwid.connect_signal(task_name_edit, 'updatetask', self.updateTask)
projects = [('pack', ProjectIcon(project, self.loadProject)) projects = [('pack', ProjectIcon(project, self.loadProject))
for project in task['projects']] for project in task['projects']]
if task['assignee']: if task['assignee']:
assignee = urwid.Text('Assigned to: ' + task['assignee']['name']) assignee = urwid.Text('Assigned to: ' + task['assignee']['name'])
else: else:
assignee = urwid.Text('(not assigned)') assignee = urwid.Text(('secondary', '(not assigned)'))
body = projects + \ body = projects + \
[ [
('pack', urwid.Divider('=')), ('pack', urwid.Divider('=')),
('pack', urwid.Text(('header', task['name'] + \ ('pack', task_name_edit),
" #" + str(task['id'])))),
('pack', assignee), ('pack', assignee),
('pack', urwid.Divider('-')), ('pack', urwid.Divider('-')),
('pack', urwid.Text(task['notes'])), ('pack', description_edit),
('pack', urwid.Divider('-')),
] + \ ] + \
[('pack', urwid.Text('[' + story['created_by']['name'] + '] ' + \ [('pack', urwid.Text('[' + story['created_by']['name'] + '] ' + \
story['text'])) for story in stories] + \ story['text'])) for story in stories] + \
@@ -237,5 +272,11 @@ class TaskDetails(urwid.Pile):
def comment(self, task_id, comment): def comment(self, task_id, comment):
urwid.emit_signal(self, 'comment', task_id, comment) urwid.emit_signal(self, 'comment', task_id, comment)
def updateDescription(self, task_id, description):
urwid.emit_signal(self, 'updatedescription', task_id, description)
def updateTask(self, task_id, name):
urwid.emit_signal(self, 'updatetask', task_id, name)
def loadProject(self, project_id): def loadProject(self, project_id):
urwid.emit_signal(self, 'loadproject', project_id) urwid.emit_signal(self, 'loadproject', project_id)