diff options
author | Lars Wirzenius <liw@liw.fi> | 2016-03-09 16:04:14 +0200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2016-03-09 16:07:26 +0200 |
commit | 86a8970f1d5a315d5b6e66a2a828d4e7a10e4e3e (patch) | |
tree | 710af917cddb91209da1c1d48a795c0e99065abb | |
parent | c3f06b64f31ec6d32d327a4d3ec781372495d5ef (diff) | |
download | distix-86a8970f1d5a315d5b6e66a2a828d4e7a10e4e3e.tar.gz |
Add Ticket.get_newest_message_timestamp method
-rw-r--r-- | distixlib/ticket.py | 15 | ||||
-rw-r--r-- | distixlib/ticket_tests.py | 22 |
2 files changed, 37 insertions, 0 deletions
diff --git a/distixlib/ticket.py b/distixlib/ticket.py index 716da5c..8e4e3cc 100644 --- a/distixlib/ticket.py +++ b/distixlib/ticket.py @@ -16,6 +16,9 @@ # =*= License: GPL-3+ =*= +import email +import time + import distixlib @@ -81,3 +84,15 @@ class Ticket(object): def get_dirty_messages(self): return self._dirty_messages + + def get_newest_message_timestamp(self): + messages = self.get_messages() + ticket_timestamp = None + for message in messages: + message_timestamp = self._get_message_timestamp(message) + ticket_timestamp = max(ticket_timestamp, message_timestamp) + return ticket_timestamp + + def _get_message_timestamp(self, message): + date = message.get('Date', 'Thu, 01 Jan 1970 00:00:00 +0000') + return time.mktime(email.utils.parsedate(date)) diff --git a/distixlib/ticket_tests.py b/distixlib/ticket_tests.py index 279e808..839f947 100644 --- a/distixlib/ticket_tests.py +++ b/distixlib/ticket_tests.py @@ -16,6 +16,8 @@ # =*= License: GPL-3+ =*= +import email +import time import unittest import distixlib @@ -140,3 +142,23 @@ class TicketTests(unittest.TestCase): ticket.set_title('foo') ticket.make_clean() self.assertFalse(ticket.is_dirty()) + + def test_returns_None_for_newest_message_time_if_no_messages(self): + ticket = distixlib.Ticket() + self.assertEqual(ticket.get_newest_message_timestamp(), None) + + def test_returns_time_of_newest_message(self): + msg = email.message.Message() + msg['Date'] = 'Wed, 09 Mar 2016 15:37:05 +0200' + + ticket = distixlib.Ticket() + ticket.add_message(msg) + + t = ticket.get_newest_message_timestamp() + tm = time.gmtime(t) + self.assertEqual(tm.tm_year, 2016) + self.assertEqual(tm.tm_mon, 3) + self.assertEqual(tm.tm_mday, 9) + self.assertEqual(tm.tm_hour, 13) + self.assertEqual(tm.tm_min, 37) + self.assertEqual(tm.tm_sec, 5) |