From 2e991f2d921f0dbb8b1b57096f57018b303f906c Mon Sep 17 00:00:00 2001 From: "James E. Blair" Date: Thu, 18 Sep 2014 08:09:30 -0700 Subject: [PATCH] Be more careful with null accounts Extend the checks for null/empty account names to message authors and the change screen. Change-Id: Ia71d5dc8ce098c8d6dd60928ad2348a2eff98264 --- gertty/db.py | 25 +++++++++++++++++++++++++ gertty/view/change.py | 9 +++++---- gertty/view/change_list.py | 10 +--------- 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/gertty/db.py b/gertty/db.py index e463624..08198b3 100644 --- a/gertty/db.py +++ b/gertty/db.py @@ -266,6 +266,19 @@ class Change(object): session.flush() return l + @property + def owner_name(self): + owner_name = 'Anonymous Coward' + if self.owner: + if self.owner.name: + owner_name = self.owner.name + elif self.owner.username: + owner_name = self.owner.username + elif self.owner.email: + owner_name = self.owner.email + return owner_name + + class Revision(object): def __init__(self, change, number, message, commit, parent, fetch_auth, fetch_ref, pending_message=False): @@ -328,6 +341,18 @@ class Message(object): self.draft = draft self.pending = pending + @property + def author_name(self): + author_name = 'Anonymous Coward' + if self.author: + if self.author.name: + author_name = self.author.name + elif self.author.username: + author_name = self.author.username + elif self.author.email: + author_name = self.author.email + return author_name + class Comment(object): def __init__(self, revision, id, author, in_reply_to, created, file, parent, line, message, draft=False): self.revision_key = revision.key diff --git a/gertty/view/change.py b/gertty/view/change.py index a530c6f..06b2af0 100644 --- a/gertty/view/change.py +++ b/gertty/view/change.py @@ -327,7 +327,7 @@ class ChangeMessageBox(mywid.HyperText): if message.draft: lines.insert(0, '') lines.insert(0, 'Patch Set %s:' % (message.revision.number,)) - text = [('change-message-name', message.author.name), + text = [('change-message-name', message.author_name), ('change-message-header', ': '+lines.pop(0)), ('change-message-header', message.created.strftime(' (%Y-%m-%d %H:%M:%S%z)'))] @@ -501,7 +501,7 @@ class ChangeView(urwid.WidgetWrap): self.change_rest_id = change.id self.change_id_label.set_text(('change-data', change.change_id)) - self.owner_label.set_text(('change-data', change.owner.name)) + self.owner_label.set_text(('change-data', change.owner_name)) self.project_label.set_text(('change-data', change.project.name)) self.branch_label.set_text(('change-data', change.branch)) self.topic_label.set_text(('change-data', self.topic)) @@ -588,7 +588,8 @@ class ChangeView(urwid.WidgetWrap): display_messages = [] result_systems = {} for message in change.messages: - if message.revision == change.revisions[-1]: + if (message.revision == change.revisions[-1] and + message.author and message.author.name): for commentlink in self.app.config.commentlinks: results = commentlink.getTestResults(self.app, message.message) if results: @@ -596,7 +597,7 @@ class ChangeView(urwid.WidgetWrap): result_systems[message.author.name] = result_system result_system.update(results) skip = False - if self.hide_comments: + if self.hide_comments and message.author and message.author.name: for regex in self.app.config.hide_comments: if regex.match(message.author.name): skip = True diff --git a/gertty/view/change_list.py b/gertty/view/change_list.py index e410bc1..eaaae73 100644 --- a/gertty/view/change_list.py +++ b/gertty/view/change_list.py @@ -57,15 +57,7 @@ class ChangeRow(urwid.Button): self.subject.set_text(change.subject) self.number.set_text(str(change.number)) self.project.set_text(change.project.name.split('/')[-1]) - owner_name = 'Anonymous Coward' - if change.owner: - if change.owner.name: - owner_name = change.owner.name - elif change.owner.username: - owner_name = change.owner.username - elif change.owner.email: - owner_name = change.owner.email - self.owner.set_text(owner_name) + self.owner.set_text(change.owner_name) del self.columns.contents[self.num_columns:] for category in categories: v = change.getMaxForCategory(category)