1 Commits

Author SHA1 Message Date
2e178da9e3 WIP format assignee and due date 2018-03-20 21:21:30 -07:00
3 changed files with 53 additions and 8 deletions

View File

@@ -1,4 +1,5 @@
import dateutil
from datetime import timezone
import dateutil.parser
from html.parser import HTMLParser
import sys
@@ -50,12 +51,15 @@ class Task(AsanaObject):
return ""
def due_date(self):
if 'due_at' in self.object_dict:
return dateutil.parser.parse(self.object_dict['due_at'])
elif 'due_one' in self.object_dict:
return dateutil.parser.parse(self.object_dict['due_on'])
if 'due_at' in self.object_dict and self.object_dict['due_at']:
datetime = dateutil.parser.parse(self.object_dict['due_at'])
datetime = datetime.replace(tzinfo=timezone.utc).astimezone(tz=None)
return datetime.strftime('%b %d, %Y %H:%M')
elif 'due_on' in self.object_dict and self.object_dict['due_on']:
date = dateutil.parser.parse(self.object_dict['due_on'])
date.strftime('%b %d, %Y')
else:
return None
return 'no due date'
def parent(self):
if 'parent' in self.object_dict and self.object_dict['parent']:

View File

@@ -1,10 +1,11 @@
import urwid
from datetime import date, datetime
from ui.task_list import TaskRow
class TaskDetails(object):
def __init__(self, task, stories, on_subtask_click, on_project_click,
on_comment):
on_comment, on_assignee_click, on_due_date_click):
self.task = task
self.on_subtask_click = on_subtask_click,
self.on_project_click = on_project_click,
@@ -15,6 +16,8 @@ class TaskDetails(object):
urwid.Divider('-'),
Memberships(task, on_subtask_click, on_project_click).component(),
urwid.Divider('-'),
Assignee(task, on_assignee_click).component(),
DueDate(task, on_due_date_click).component(),
CustomFields(task).component(),
urwid.Divider('='),
urwid.Text(task.description()),
@@ -38,6 +41,44 @@ class TaskDetails(object):
def component(self):
return self.details
class Assignee(object):
def __init__(self, task, on_click):
if task.assignee():
assignee = task.assignee().name()
else:
assignee = "unassigned"
self.assignee = urwid.SelectableIcon([('bold', 'Assignee: '), ('', assignee)])
self.on_click = on_click
#urwid.connect_signal(self.assignee, 'keypress', self.on_keypress)
def component(self):
return self.assignee
def on_keypress(self, size, key):
if key == "enter":
self.on_click()
else:
return key
class DueDate(object):
def __init__(self, task, on_click):
self.due_date = urwid.SelectableIcon([('bold', 'Due: '), ('', task.due_date())])
self.on_click = on_click
#urwid.connect_signal(self.due_date, 'keypress', self.on_keypress)
def component(self):
return self.due_date
def on_keypress(self, size, key):
if key == "enter":
self.on_click()
else:
return key
class Memberships(object):
def __init__(self, task, on_subtask_click, on_project_click):
self.on_project_click = on_project_click

View File

@@ -32,7 +32,7 @@ class Ui(object):
stories,
self.task_details,
self.task_list,
None).component())
None, None, None).component())
thread = Thread(target=runInThread())
thread.start()