[Spambayes-checkins] spambayes/Outlook2000 addin.py,1.48,1.49 filter.py,1.16,1.17 manager.py,1.46,1.47 msgstore.py,1.39,1.40

Mark Hammond mhammond at users.sourceforge.net
Thu Feb 13 17:24:24 EST 2003


Update of /cvsroot/spambayes/spambayes/Outlook2000
In directory sc8-pr-cvs1:/tmp/cvs-serv7553

Modified Files:
	addin.py filter.py manager.py msgstore.py 
Log Message:
Handle exceptions when opening folders better.  GetFolder() now returns
None, rather than forcing each caller to check for obscure COM errors.


Index: addin.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/Outlook2000/addin.py,v
retrieving revision 1.48
retrieving revision 1.49
diff -C2 -d -r1.48 -r1.49
*** addin.py	4 Feb 2003 06:17:32 -0000	1.48
--- addin.py	14 Feb 2003 01:24:20 -0000	1.49
***************
*** 546,550 ****
                  mapi_folder = self.manager.message_store.GetFolder(outlook_folder)
                  look_id = self.manager.config.filter.spam_folder_id
!                 if look_id:
                      look_folder = self.manager.message_store.GetFolder(look_id)
                      if mapi_folder == look_folder:
--- 546,550 ----
                  mapi_folder = self.manager.message_store.GetFolder(outlook_folder)
                  look_id = self.manager.config.filter.spam_folder_id
!                 if mapi_folder is not None and look_id:
                      look_folder = self.manager.message_store.GetFolder(look_id)
                      if mapi_folder == look_folder:
***************
*** 554,558 ****
                  # Check if uncertain
                  look_id = self.manager.config.filter.unsure_folder_id
!                 if look_id:
                      look_folder = self.manager.message_store.GetFolder(look_id)
                      if mapi_folder == look_folder:
--- 554,558 ----
                  # Check if uncertain
                  look_id = self.manager.config.filter.unsure_folder_id
!                 if mapi_folder is not None and look_id:
                      look_folder = self.manager.message_store.GetFolder(look_id)
                      if mapi_folder == look_folder:

Index: filter.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/Outlook2000/filter.py,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** filter.py	4 Feb 2003 06:17:32 -0000	1.16
--- filter.py	14 Feb 2003 01:24:21 -0000	1.17
***************
*** 39,46 ****
              elif action.startswith("co"): # copied
                  dest_folder = mgr.message_store.GetFolder(folder_id)
!                 msg.CopyTo(dest_folder)
              elif action.startswith("mo"): # Moved
                  dest_folder = mgr.message_store.GetFolder(folder_id)
!                 msg.MoveTo(dest_folder)
              else:
                  raise RuntimeError, "Eeek - bad action '%r'" % (action,)
--- 39,54 ----
              elif action.startswith("co"): # copied
                  dest_folder = mgr.message_store.GetFolder(folder_id)
!                 if dest_folder is None:
!                     print "ERROR: Unable to open the folder to Copy the " \
!                           "message - this message was not copied"
!                 else:
!                     msg.CopyTo(dest_folder)
              elif action.startswith("mo"): # Moved
                  dest_folder = mgr.message_store.GetFolder(folder_id)
!                 if dest_folder is None:
!                     print "ERROR: Unable to open the folder to Move the " \
!                           "message - this message was not moved"
!                 else:
!                     msg.MoveTo(dest_folder)
              else:
                  raise RuntimeError, "Eeek - bad action '%r'" % (action,)

Index: manager.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/Outlook2000/manager.py,v
retrieving revision 1.46
retrieving revision 1.47
diff -C2 -d -r1.46 -r1.47
*** manager.py	12 Feb 2003 22:05:33 -0000	1.46
--- manager.py	14 Feb 2003 01:24:21 -0000	1.47
***************
*** 172,179 ****
          names = []
          for eid in folder_ids:
!             try:
!                 name = self.message_store.GetFolder(eid).name
!             except pythoncom.com_error:
                  name = "<unknown folder>"
              names.append(name)
          ret = '; '.join(names)
--- 172,180 ----
          names = []
          for eid in folder_ids:
!             folder = self.message_store.GetFolder(eid)
!             if folder is None:
                  name = "<unknown folder>"
+             else:
+                 name = folder.name
              names.append(name)
          ret = '; '.join(names)
***************
*** 197,200 ****
--- 198,206 ----
          assert self.outlook is not None, "I need outlook :("
          msgstore_folder = self.message_store.GetFolder(folder_id)
+         if msgstore_folder is None:
+             print "Checking a folder for our field failed - "\
+                   "there is no such folder."
+             return
+             
          folder = msgstore_folder.GetOutlookItem()
          if self.verbose > 1:

Index: msgstore.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/Outlook2000/msgstore.py,v
retrieving revision 1.39
retrieving revision 1.40
diff -C2 -d -r1.39 -r1.40
*** msgstore.py	4 Feb 2003 06:17:32 -0000	1.39
--- msgstore.py	14 Feb 2003 01:24:21 -0000	1.40
***************
*** 205,210 ****
          for folder_id in folder_ids:
              folder_id = self.NormalizeID(folder_id)
!             folder = self._OpenEntry(folder_id)
!             table = folder.GetContentsTable(0)
              rc, props = folder.GetProps( (PR_DISPLAY_NAME_A,), 0)
              yield MAPIMsgStoreFolder(self, folder_id, props[0][1],
--- 205,219 ----
          for folder_id in folder_ids:
              folder_id = self.NormalizeID(folder_id)
!             try:
!                 folder = self._OpenEntry(folder_id)
!                 table = folder.GetContentsTable(0)
!             except pythoncom.com_error, (hr, msg, exc, arg_err):
!                 # We will ignore *all* such errors for the time
!                 # being, but warn for results we don't know about.
!                 if hr not in [mapi.MAPI_E_OBJECT_DELETED, mapi.MAPI_E_NOT_FOUND]:
!                     print "WARNING: Unexpected MAPI error opening folder"
!                     print "Error:", mapiutil.GetScodeString(hr)
!                     print "Exception Message:", msg
!                 continue
              rc, props = folder.GetProps( (PR_DISPLAY_NAME_A,), 0)
              yield MAPIMsgStoreFolder(self, folder_id, props[0][1],
***************
*** 222,227 ****
          else:
              folder_id = self.NormalizeID(folder_id)
!         folder = self._OpenEntry(folder_id)
!         table = folder.GetContentsTable(0)
          # Ensure we have a long-term ID.
          rc, props = folder.GetProps( (PR_ENTRYID, PR_DISPLAY_NAME_A), 0)
--- 231,245 ----
          else:
              folder_id = self.NormalizeID(folder_id)
!         try:
!             folder = self._OpenEntry(folder_id)
!             table = folder.GetContentsTable(0)
!         except pythoncom.com_error, (hr, msg, exc, arg_err):
!             # We will ignore *all* such errors for the time
!             # being, but warn for results we don't know about.
!             if hr not in [mapi.MAPI_E_OBJECT_DELETED, mapi.MAPI_E_NOT_FOUND]:
!                 print "WARNING: Unexpected MAPI error opening folder"
!                 print "Error:", mapiutil.GetScodeString(hr)
!                 print "Exception Message:", msg
!             return None
          # Ensure we have a long-term ID.
          rc, props = folder.GetProps( (PR_ENTRYID, PR_DISPLAY_NAME_A), 0)





More information about the Spambayes-checkins mailing list