Update of /cvsroot/spambayes/spambayes/spambayes
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv27616/spambayes
Modified Files:
mboxutils.py storage.py
Log Message:
patch 1707808 from Dave Abrahams - tte patch for imap
Index: mboxutils.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/mboxutils.py,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** mboxutils.py 27 Mar 2007 10:59:24 -0000 1.10
--- mboxutils.py 11 May 2007 00:23:08 -0000 1.11
***************
*** 66,69 ****
--- 66,77 ----
f.close()
+ def full_messages(msgs):
+ """A generator that transforms each message by calling its
+ get_full_message() method. Used for IMAP messages since they don't really
+ have their content by default.
+ """
+ for x in msgs:
+ yield x.get_full_message()
+
def _cat(seqs):
for seq in seqs:
***************
*** 99,102 ****
--- 107,142 ----
return _cat(mboxes)
+ elif name.startswith(":"):
+ # IMAP mailbox name:
+ # :username:[EMAIL PROTECTED]:folder1,...folderN
+ # :username:[EMAIL PROTECTED]:port:folder1,...folderN
+ # :username:[EMAIL PROTECTED]:ALL
+ # :username:[EMAIL PROTECTED]:port:ALL
+ parts = re.compile(
+ ':(?P<user>[^@:]+):(?P<pwd>[EMAIL
PROTECTED])@(?P<server>[^:]+(:[0-9]+)?):(?P<name>[^:]+)'
+ ).match(name).groupdict()
+
+ from scripts.sb_imapfilter import IMAPSession, IMAPFolder
+ from spambayes import Stats, message
+ from spambayes.Options import options
+
+ session = IMAPSession(parts['server'])
+ session.login(parts['user'], parts['pwd'])
+ folder_list = session.folder_list()
+
+ if name == "ALL":
+ names = folder_list
+ else:
+ names = parts['name'].split(',')
+
+ message_db = message.Message().message_info_db
+ stats = Stats.Stats(options, message_db)
+ mboxes = [ IMAPFolder(n,session,stats) for n in names ]
+
+ if len(mboxes) == 1:
+ return full_messages(mboxes[0])
+ else:
+ return _cat([full_messages(x) for x in mboxes])
+
if os.path.isdir(name):
# XXX Bogus: use a Maildir if /cur is a subdirectory, else a MHMailbox
Index: storage.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/storage.py,v
retrieving revision 1.62
retrieving revision 1.63
diff -C2 -d -r1.62 -r1.63
*** storage.py 4 Apr 2007 11:49:05 -0000 1.62
--- storage.py 11 May 2007 00:23:08 -0000 1.63
***************
*** 477,481 ****
print >> sys.stderr, 'Loading state from',self.db_name,'database'
! self.db = psycopg.connect(self.db_name)
c = self.cursor()
--- 477,481 ----
print >> sys.stderr, 'Loading state from',self.db_name,'database'
! self.db = psycopg.connect('dbname=' + self.db_name)
c = self.cursor()
***************
*** 768,773 ****
abort = ZODB.Transaction.get_transaction().abort
from ZODB.POSException import ConflictError
from ZODB.POSException import ReadOnlyError
- from ZODB.POSException import TransactionFailedError
assert self.closed == False, "Can't store a closed database"
--- 768,776 ----
abort = ZODB.Transaction.get_transaction().abort
from ZODB.POSException import ConflictError
+ try:
+ from ZODB.POSException import TransactionFailedError
+ except:
+ from ZODB.POSException import TransactionError as
TransactionFailedError
from ZODB.POSException import ReadOnlyError
assert self.closed == False, "Can't store a closed database"
_______________________________________________
Spambayes-checkins mailing list
[email protected]
http://mail.python.org/mailman/listinfo/spambayes-checkins