From 2e178da9e392e3f8ba07d6124be2512498ec1771 Mon Sep 17 00:00:00 2001 From: Aaron Gutierrez Date: Tue, 20 Mar 2018 21:21:30 -0700 Subject: [PATCH] WIP format assignee and due date --- models/models.py | 16 ++++++++++------ ui/task_details.py | 43 ++++++++++++++++++++++++++++++++++++++++++- ui/ui.py | 2 +- 3 files changed, 53 insertions(+), 8 deletions(-) diff --git a/models/models.py b/models/models.py index fe0efba..7888136 100644 --- a/models/models.py +++ b/models/models.py @@ -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']: diff --git a/ui/task_details.py b/ui/task_details.py index a7ad9e7..e776fcf 100644 --- a/ui/task_details.py +++ b/ui/task_details.py @@ -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 diff --git a/ui/ui.py b/ui/ui.py index 062689d..6fdf06c 100644 --- a/ui/ui.py +++ b/ui/ui.py @@ -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()