diff options
Diffstat (limited to 'distixlib/ticket_store.py')
-rw-r--r-- | distixlib/ticket_store.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/distixlib/ticket_store.py b/distixlib/ticket_store.py index 73f7257..a174b02 100644 --- a/distixlib/ticket_store.py +++ b/distixlib/ticket_store.py @@ -172,6 +172,35 @@ class TicketStore(object): ticket_dir = self._get_dir_for_ticket(ticket) return self._saver.save_changes_to_ticket(ticket, ticket_dir) + def ticket_has_message_with_text( + self, ticket, msg_text): # pragma: no cover + filenames = self.get_message_filenames(ticket) + for filename in filenames: + if self._file_contains(filename, msg_text): + return True + return False + + def get_message_filenames(self, ticket): # pragma: no cover + ticket_dir = self._get_dir_for_ticket(ticket) + maildir_pathname = self._saver._get_maildir_pathname(ticket_dir) + + message_filenames = [] + + for dirname, subdirs, filenames in os.walk(maildir_pathname): + if '.empty' in subdirs: + subdirs.remove('.empty') + for filename in filenames: + message_filenames.append(os.path.join(dirname, filename)) + + return message_filenames + + def _file_contains(self, filename, data): # pragma: no cover + st = os.lstat(filename) + if st.st_size != len(data): + return False + with open(filename) as f: + return f.read() == data + class _TicketCache(object): |