diff options
author | pazz <patricktotzke@gmail.com> | 2011-05-27 13:29:27 +0100 |
---|---|---|
committer | pazz <patricktotzke@gmail.com> | 2011-05-27 13:29:27 +0100 |
commit | 3f2c833c88ab8c7a8bce5516dcbe7661405927fe (patch) | |
tree | d30186e3fd1c33421264a4cd610c3a34f4862a3e | |
parent | a489102d352b23321b5fcadd317f7a1b30d3806c (diff) |
use db.Message wrapper in SingleThreadBuffer
-rw-r--r-- | alot/db.py | 25 | ||||
-rw-r--r-- | alot/widgets.py | 18 |
2 files changed, 15 insertions, 28 deletions
@@ -88,11 +88,7 @@ class Thread: return self.subject def get_toplevel_messages(self): - tl = [] - for mid in self.topmessages: - msg = self.dbman.get_message(mid) - tl.append(Message(self.dbman,msg)) - return tl + return [self.dbman.get_message(mid) for mid in self.topmessages] def get_newest_date(self): return self.newest @@ -108,16 +104,19 @@ class Message: self.dbman = dbman self.mid = msg.get_message_id() self.strrep = msg.__str__() - self.replies = [m.get_message_id() for m in msg.get_replies()] + + self.email = None #will be read upon first use + r = msg.get_replies() #not iterable if None + if r: + self.replies = [m.get_message_id() for m in msg.get_replies()] + else: + self.replies = [] + self.filename = msg.get_filename() self.tags = [ t.__str__() for t in msg.get_tags()] def get_replies(self): - r = [] - for mid in self.replies: - msg = self.dbman.get_message(mid) - r.append(Message(self.dbman,msg)) - return r + return [self.dbman.get_message(mid) for mid in self.replies] def get_tags(self): return self.tags @@ -131,9 +130,9 @@ class Message: def __str__(self): return self.strrep - def read_mail(self, message): + def read_mail(self, filename): try: - f_mail = open(message.get_filename()) + f_mail = open(filename) except EnvironmentError: eml = email.message_from_string('Unable to open the file') else: diff --git a/alot/widgets.py b/alot/widgets.py index 8f1b2995..e0aae81a 100644 --- a/alot/widgets.py +++ b/alot/widgets.py @@ -122,14 +122,13 @@ class PromptWidget(AttrMap): class MessageWidget(WidgetWrap): def __init__(self, message, even=False): self.message = message - self.email = self.read_mail(message) if even: lineattr = 'messageline_even' else: lineattr = 'messageline_odd' - self.bodyw = MessageBodyWidget(self.email) - self.headerw = MessageHeaderWidget(self.email) + self.bodyw = MessageBodyWidget(self.message.get_email()) + self.headerw = MessageHeaderWidget(self.message.get_email()) self.linew = MessageLineWidget(self.message) pile = Pile([ AttrMap(self.linew, lineattr), @@ -148,18 +147,7 @@ class MessageWidget(WidgetWrap): return self.message def get_email(self): - return self.eml - - def read_mail(self, message): - #what about crypto? - try: - f_mail = open(message.get_filename()) - except EnvironmentError: - eml = email.message_from_string('Unable to open the file') - else: - eml = email.message_from_file(f_mail) - f_mail.close() - return eml + return self.message.get_email() class MessageLineWidget(WidgetWrap): |