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

Reply via email to