From fe6a3233800630c9ac6e6668f6eb048e8ab1d321 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Thu, 13 May 2021 12:22:29 +0200 Subject: db/message: stop loading the email in the constructor The last bit of code in the constructor accessing the email was the chunk parsing the author. Move it to the author accessor, and also make it use the 'From' header value loaded from the Notmuch message (which is stored in the database). --- alot/db/message.py | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/alot/db/message.py b/alot/db/message.py index f2a298d7..74139315 100644 --- a/alot/db/message.py +++ b/alot/db/message.py @@ -386,6 +386,9 @@ class Message: _session_keys = None + _nm_from = None + "From header stored in the database" + def __init__(self, dbman, thread, msg, depth): """ :param dbman: db manager that is used for further lookups @@ -416,19 +419,8 @@ class Message: session_keys.append(value) self._session_keys = session_keys - self._tags = set(msg.tags) - - sender = self._email.get('From') - if sender is None: - sender = self._email.get('Sender') - - if sender: - self._from = sender - elif 'draft' in self._tags: - acc = settings.get_accounts()[0] - self._from = '"{}" <{}>'.format(acc.realname, str(acc.address)) - else: - self._from = '"Unknown" <>' + self._tags = set(msg.tags) + self._nm_from = msg.header('from') def __str__(self): """prettyprint the message""" @@ -502,7 +494,18 @@ class Message: :rtype: (str,str) """ - return email.utils.parseaddr(self._from) + sender = self._nm_from + if sender is None: + sender = self.headers.get('Sender') + + if not sender: + if 'draft' in self._tags: + acc = settings.get_accounts()[0] + sender = '"{}" <{}>'.format(acc.realname, str(acc.address)) + else: + sender = '"Unknown" <>' + + return email.utils.parseaddr(sender) def tags_add(self, tags): """ -- cgit v1.2.3