From 4803aaf4846b5fa7013233964b746dbcdb39164e Mon Sep 17 00:00:00 2001 From: Bradley Jones Date: Wed, 17 Sep 2014 15:54:41 +0100 Subject: [PATCH] Add updated column to the list of changes Updated column shows the time of the last update to a change if the last change was 'today' otherwise it shows the date Change-Id: I1c0cca9b30f414ddd5d95485a688515c15d0be13 --- gertty/view/change_list.py | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/gertty/view/change_list.py b/gertty/view/change_list.py index eaaae73..58df858 100644 --- a/gertty/view/change_list.py +++ b/gertty/view/change_list.py @@ -13,6 +13,7 @@ # License for the specific language governing permissions and limitations # under the License. +import datetime import urwid from gertty import keymap @@ -30,11 +31,13 @@ class ChangeRow(urwid.Button): def selectable(self): return True - def __init__(self, change, categories, project=False, owner=False, callback=None): + def __init__(self, change, categories, project=False, owner=False, + updated=False, callback=None): super(ChangeRow, self).__init__('', on_press=callback, user_data=change.key) self.change_key = change.key self.subject = urwid.Text(u'', wrap='clip') self.number = urwid.Text(u'') + self.updated = urwid.Text(u'') self.project = urwid.Text(u'', wrap='clip') self.owner = urwid.Text(u'', wrap='clip') cols = [(6, self.number), ('weight', 4, self.subject)] @@ -42,6 +45,8 @@ class ChangeRow(urwid.Button): cols.append(('weight', 1, self.project)) if owner: cols.append(('weight', 2, self.owner)) + if updated: + cols.append(('weight', 1, self.updated)) self.num_columns = len(cols) self.columns = urwid.Columns(cols, dividechars=1) self.row_style = urwid.AttrMap(self.columns, '') @@ -58,6 +63,12 @@ class ChangeRow(urwid.Button): self.number.set_text(str(change.number)) self.project.set_text(change.project.name.split('/')[-1]) self.owner.set_text(change.owner_name) + if datetime.date.today() == change.updated.date(): + self.updated.set_text(change.updated.strftime("%I:%M %p").upper()) + elif datetime.date.today().year == change.updated.date().year: + self.updated.set_text(change.updated.strftime("%b %d")) + else: + self.updated.set_text(change.updated.strftime("%Y")) del self.columns.contents[self.num_columns:] for category in categories: v = change.getMaxForCategory(category) @@ -68,12 +79,14 @@ class ChangeRow(urwid.Button): self.columns.contents.append((urwid.Text(v), self.columns.options('given', 2))) class ChangeListHeader(urwid.WidgetWrap): - def __init__(self, project=False, owner=False): + def __init__(self, project=False, owner=False, updated=False): cols = [(6, urwid.Text(u'Number')), ('weight', 4, urwid.Text(u'Subject'))] if project: cols.append(('weight', 1, urwid.Text(u'Project'))) if owner: cols.append(('weight', 2, urwid.Text(u'Owner'))) + if updated: + cols.append(('weight', 1, urwid.Text(u'Updated'))) self.num_columns = len(cols) super(ChangeListHeader, self).__init__(urwid.Columns(cols, dividechars=1)) @@ -104,10 +117,11 @@ class ChangeListView(urwid.WidgetWrap): self.unreviewed = unreviewed self.change_rows = {} self.listbox = urwid.ListBox(urwid.SimpleFocusListWalker([])) - self.display_owner = self.display_project = True + self.display_owner = self.display_project = self.display_updated = True if '_project_key' in query: self.display_project = False - self.header = ChangeListHeader(self.display_project, self.display_owner) + self.header = ChangeListHeader(self.display_project, self.display_owner, + self.display_updated) self.categories = [] self.refresh() self._w.contents.append((app.header, ('pack', 1))) @@ -134,7 +148,8 @@ class ChangeListView(urwid.WidgetWrap): row = self.change_rows.get(change.key) if not row: row = ChangeRow(change, self.categories, self.display_project, - self.display_owner, callback=self.onSelect) + self.display_owner, self.display_updated, + callback=self.onSelect) self.listbox.body.insert(i, row) self.change_rows[change.key] = row else: