diff options
-rw-r--r-- | alot/commands/thread.py | 2 | ||||
-rw-r--r-- | alot/db/message.py | 25 | ||||
-rw-r--r-- | tests/db/test_message.py | 6 |
3 files changed, 21 insertions, 12 deletions
diff --git a/alot/commands/thread.py b/alot/commands/thread.py index 87e6b4a3..a0f148bb 100644 --- a/alot/commands/thread.py +++ b/alot/commands/thread.py @@ -690,7 +690,7 @@ class PipeCommand(Command): pipestrings = [e.id for e in to_print] separator = '\n' elif self.output_format == 'filepath': - pipestrings = [e.get_filename() for e in to_print] + pipestrings = [e.filename for e in to_print] separator = '\n' else: for msg in to_print: diff --git a/alot/db/message.py b/alot/db/message.py index 4adb0816..d9866384 100644 --- a/alot/db/message.py +++ b/alot/db/message.py @@ -35,6 +35,9 @@ class Message: """value of the Message-Id header (str)""" id = None + """Paths to all files corresponding to this message""" + filenames = None + """this message's depth in the thread tree""" depth = None @@ -67,7 +70,14 @@ class Message: self.date = datetime.fromtimestamp(msg.get_date()) except ValueError: self.date = None - self._filename = msg.get_filename() + + filenames = [] + for f in msg.get_filenames(): + filenames.append(f[:]) + if len(filenames) == 0: + raise ValueError('No filenames for a message returned') + self.filenames = filenames + self._email = None # will be read upon first use self._attachments = None # will be read upon first use self._tags = set(msg.get_tags()) @@ -107,14 +117,17 @@ class Message: return self.id == other.id return NotImplemented + @property + def filename(self): + return self.filenames[0] + def get_email(self): """returns :class:`email.email.EmailMessage` for this message""" - path = self.get_filename() warning = "Subject: Caution!\n"\ - "Message file is no longer accessible:\n%s" % path + "Message file is no longer accessible:\n%s" % self.filename if not self._email: try: - with open(path, 'rb') as f: + with open(self.filename, 'rb') as f: self._email = utils.decrypted_message_from_bytes( f.read(), self._session_keys) except IOError: @@ -122,10 +135,6 @@ class Message: warning, policy=email.policy.SMTP) return self._email - def get_filename(self): - """returns absolute path of message files location""" - return self._filename - def get_message_parts(self): """yield all body parts of this message""" for msg in self.get_email().walk(): diff --git a/tests/db/test_message.py b/tests/db/test_message.py index cd50ab45..8fa7692d 100644 --- a/tests/db/test_message.py +++ b/tests/db/test_message.py @@ -48,15 +48,15 @@ class MockNotmuchMessage(object): def get_date(self): return self.mock_date - def get_filename(self): - return self.mock_filename - def get_tags(self): return self.mock_tags def get_properties(self, prop, exact=False): return [] + def get_filenames(self): + return ['/foo'] + class TestMessage(unittest.TestCase): |