summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2016-02-21 12:05:32 +0200
committerLars Wirzenius <liw@liw.fi>2016-02-21 12:16:16 +0200
commitc26eca326d7ae25c283f494b61fd2ad3958bb115 (patch)
tree634e631ccb6df7ceb1b7c49cefda791de4561b9d
parent4292c6adc8b2363d283dabcafdec96ee3de8f37c (diff)
downloaddistix-c26eca326d7ae25c283f494b61fd2ad3958bb115.tar.gz
Use threading and rendering in show plugin
-rw-r--r--distixlib/message_renderer.py5
-rw-r--r--distixlib/plugins/show_plugin.py12
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))