diff --git a/papersurfer.py b/papersurfer.py index d17379a189d017d48341cf27b73a85234530917b..434bd90bc1027d53ac40a68885b8ed96cda25abe 100644 --- a/papersurfer.py +++ b/papersurfer.py @@ -25,6 +25,7 @@ class PostDTO: """"Encapsulate Mattermost Posts.""" id: str message: str + reporter: str class Mattermost: @@ -37,11 +38,22 @@ class Mattermost: 'port': 443 }) self.mattermost.login() + self.reporters = {} + + + def get_reporter(self, id): + if id not in self.reporters: + self.reporters[id] = self.mattermost.users.get_user(id)["username"] + return self.reporters[id] def retrieve_all_messages(self): """Retrieve all messages from mattermost, unfiltered for papers.""" posts = self.mattermost.posts.get_posts_for_channel(CHANNEL) - return [PostDTO(m['id'], m['message']) + return [PostDTO( + id=m['id'], + message=m['message'], + reporter=self.get_reporter(m['user_id']), + ) for m in posts['posts'].values()] def filter_incoming(self, posts): @@ -56,7 +68,9 @@ class Mattermost: def get_filtered(self, needle): """Filter posts by needle.""" - return [m for m in self.msgs if needle.lower() in m.message.lower()] + return [m for m in self.msgs + if needle.lower() in m.message.lower() + or needle.lower() in m.reporter.lower()] class Papersurfer: @@ -74,7 +88,7 @@ class Papersurfer: papers = self.mtm.retrieve() body = [] for paper in papers: - button = urwid.Button(paper.message) + button = urwid.Button(f"{paper.message} ({paper.reporter})") urwid.connect_signal(button, 'click', partial(self.handle_paper, paper)) body.append(urwid.AttrMap(button, None, focus_map='reversed'))