summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpazz <patricktotzke@gmail.com>2011-05-27 13:29:27 +0100
committerpazz <patricktotzke@gmail.com>2011-05-27 13:29:27 +0100
commit3f2c833c88ab8c7a8bce5516dcbe7661405927fe (patch)
treed30186e3fd1c33421264a4cd610c3a34f4862a3e
parenta489102d352b23321b5fcadd317f7a1b30d3806c (diff)
use db.Message wrapper in SingleThreadBuffer
-rw-r--r--alot/db.py25
-rw-r--r--alot/widgets.py18
2 files changed, 15 insertions, 28 deletions
diff --git a/alot/db.py b/alot/db.py
index 94b4568f..34bff6f0 100644
--- a/alot/db.py
+++ b/alot/db.py
@@ -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):