summaryrefslogtreecommitdiff
path: root/Mailman/Message.py
diff options
context:
space:
mode:
authorviega1998-06-02 02:47:11 +0000
committerviega1998-06-02 02:47:11 +0000
commit145b016d3d43a6de01b3f625538816e9a3a0098a (patch)
tree511039ebc410f6238eaf40eafb87d3969dbb0c4c /Mailman/Message.py
parent0ad5a853e084e6b606e5a5dcd21ee2656f828af6 (diff)
downloadmailman-145b016d3d43a6de01b3f625538816e9a3a0098a.tar.gz
mailman-145b016d3d43a6de01b3f625538816e9a3a0098a.tar.zst
mailman-145b016d3d43a6de01b3f625538816e9a3a0098a.zip
Diffstat (limited to 'Mailman/Message.py')
-rw-r--r--Mailman/Message.py48
1 files changed, 46 insertions, 2 deletions
diff --git a/Mailman/Message.py b/Mailman/Message.py
index 8d9595fee..82b2cb554 100644
--- a/Mailman/Message.py
+++ b/Mailman/Message.py
@@ -17,7 +17,7 @@
"""Embody incoming and outgoing messages as objects."""
-__version__ = "$Revision: 646 $"
+__version__ = "$Revision: 670 $"
import sys
@@ -63,6 +63,11 @@ class FakeFile:
startline = self.curline
self.curline = self.lastline + 1
return self.lines[startline:]
+ def seek(self, pos):
+ if pos <> 0:
+ raise ValueError, "FakeFiles can only seek to the beginning."
+ self.curline = 0
+
# We know the message is gonna come in on stdin or from text for our purposes.
@@ -74,11 +79,26 @@ class IncomingMessage(rfc822.Message):
else:
rfc822.Message.__init__(self, FakeFile(text), 0)
self.body = self.fp.read()
+ self.file_count = None
def readlines(self):
+ if self.file_count <> None:
+ x = self.file_count
+ self.file_count = len(self.file_data)
+ return self.file_data[x:]
return map(RemoveNewline, self.headers) + [''] + \
string.split(self.body,'\n')
+ def readline(self):
+ if self.file_count == None:
+ self.file_count = 0
+ self.file_data = map(RemoveNewline, self.headers) + [''] + \
+ string.split(self.body,'\n')
+ if self.file_count >= len(self.file_data):
+ return ''
+ self.file_count = self.file_count + 1
+ return self.file_data[self.file_count-1] + '\n'
+
def GetSender(self):
# Look for a Sender field.
sender = self.getheader('sender')
@@ -152,9 +172,23 @@ class OutgoingMessage:
self.sender = sender
def readlines(self):
- return map(RemoveNewline,self.headers) + [''] + \
+ if self.file_count <> None:
+ x = self.file_count
+ self.file_count = len(self.file_data)
+ return self.file_data[x:]
+ return map(RemoveNewline, self.headers) + [''] + \
string.split(self.body,'\n')
+ def readline(self):
+ if self.file_count == None:
+ self.file_count = 0
+ self.file_data = map(RemoveNewline, self.headers) + [''] + \
+ string.split(self.body,'\n')
+ if self.file_count >= len(self.file_data):
+ return ''
+ self.file_count = self.file_count + 1
+ return self.file_data[self.file_count-1] + '\n'
+
def SetHeaders(self, headers):
self.headers = map(AddBackNewline, string.split(headers, '\n'))
self.CacheHeaders()
@@ -222,3 +256,13 @@ class OutgoingMessage:
newheaders.append(h)
self.headers = newheaders
self.CacheHeaders()
+
+
+
+class NewsMessage(IncomingMessage):
+ def __init__(self, mail_msg):
+ self.fp = mail_msg.fp
+ self.fp.seek(0)
+ rfc822.Message.__init__(self, self.fp, 0)
+ self.body = self.fp.read()
+ self.file_count = None