summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--alot/commands/thread.py2
-rw-r--r--alot/db/message.py25
-rw-r--r--tests/db/test_message.py6
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):