diff options
author | Lars Wirzenius <liw@liw.fi> | 2016-02-21 12:05:32 +0200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2016-02-21 12:16:16 +0200 |
commit | c26eca326d7ae25c283f494b61fd2ad3958bb115 (patch) | |
tree | 634e631ccb6df7ceb1b7c49cefda791de4561b9d | |
parent | 4292c6adc8b2363d283dabcafdec96ee3de8f37c (diff) | |
download | distix-c26eca326d7ae25c283f494b61fd2ad3958bb115.tar.gz |
Use threading and rendering in show plugin
-rw-r--r-- | distixlib/message_renderer.py | 5 | ||||
-rw-r--r-- | distixlib/plugins/show_plugin.py | 12 |
2 files changed, 13 insertions, 4 deletions
diff --git a/distixlib/message_renderer.py b/distixlib/message_renderer.py index c9fe7b3..6d654b0 100644 --- a/distixlib/message_renderer.py +++ b/distixlib/message_renderer.py @@ -21,11 +21,12 @@ import email class MessageRenderer(object): - def summary(self, msg, output): + def summary(self, msg, encoding): sender = self._get_header(msg, 'From') + date = self._get_header(msg, 'Date') body = self._plain_text_body(msg) indented_body = self._indent(body.strip()) - output.write('From: {}\n\n{}\n'.format(sender, indented_body)) + return 'From: {}\nDate: {}\n\n{}\n'.format(sender, date, indented_body) def _indent(self, text): fmt = ' {}\n' diff --git a/distixlib/plugins/show_plugin.py b/distixlib/plugins/show_plugin.py index 4858ee4..4cf1772 100644 --- a/distixlib/plugins/show_plugin.py +++ b/distixlib/plugins/show_plugin.py @@ -39,7 +39,7 @@ class ShowTicketPlugin(cliapp.Plugin): % end % for msg in msgs: -{{unicode(msg.get_payload(decode=True), encoding, 'ignore')}} +{{renderer.summary(msg, encoding)}} % end ''' @@ -66,12 +66,20 @@ class ShowTicketPlugin(cliapp.Plugin): def _show_ticket(self, template, ticket): ticket_id = ticket.get_ticket_id() + _, encoding = locale.getdefaultlocale() if encoding is None: encoding = 'UTF8' + + thread = distixlib.MessageThread() + for msg in ticket.get_messages(): + thread.add_message(msg) + rendered = template.render( encoding=encoding, + renderer=distixlib.MessageRenderer(), ticket_id=ticket_id, metadata=ticket.get_ticket_metadata(), - msgs=ticket.get_messages()) + msgs=thread.get_messages_in_date_order()) + self.app.output.write(rendered.encode(encoding)) |