Update of /cvsroot/tmda/tmda/contrib/cgi
In directory sc8-pr-cvs1:/tmp/cvs-serv16760

Modified Files:
        View.py 
Log Message:
Switched from using tmda-pending to using the Pending.py module.

Added error trapping in case a message is released/deleted/etc. twice.


Index: View.py
===================================================================
RCS file: /cvsroot/tmda/tmda/contrib/cgi/View.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- View.py     25 Nov 2002 17:08:28 -0000      1.1
+++ View.py     26 Nov 2002 19:33:31 -0000      1.2
@@ -29,6 +29,7 @@
 import string
 import CgiUtil
 from TMDA import Defaults
+from TMDA import Pending
 from TMDA import Util
 
 # Pre-calc the regular expressions
@@ -74,13 +75,12 @@
   if not re.compile("^\d+\.\d+\.msg$").search(PVars["MsgID"]):
     raise IOError, "Bad e-mail filename"
 
-  # Change to the appropriate directory
-  os.chdir(os.path.join(Defaults.DATADIR, "pending"))
-
   # Any subcommands?
   if Form.has_key("subcmd"):
     # Locate messages in pending dir
-    Msgs = CgiUtil.GetPendingList()
+    Queue = Pending.Queue(descending = (PVars["SortDir"] == "desc"))
+    Queue.initQueue()
+    Msgs = Queue.listPendingIds()
     try:
       MsgIdx = Msgs.index(PVars["MsgID"])
     except: # Oops.  Perhaps they released the message?  Get the list!
@@ -106,34 +106,21 @@
     
     else:
       # Read in e-mail
-      MsgObj = email.message_from_file(open(PVars["MsgID"], "r"))
-      ReturnPath = email.Utils.parseaddr(MsgObj.get('return-path'))[1]
-
-      # Check that we can access tmda-pending
-      if not os.access(Defaults.CGI_PATH_TO_PENDING, os.X_OK):
-        raise IOError, "Can't reach tmda-pending, check CGI_PATH_TO_PENDING"
-
-      # delete subcommand
-      if Form["subcmd"].value == "delete":
-        os.spawnl(os.P_WAIT, Defaults.CGI_PATH_TO_PENDING,
-          Defaults.CGI_PATH_TO_PENDING, "-qdb", Msgs[MsgIdx])
-      # release subcommand
-      elif Form["subcmd"].value == "release":
-        os.spawnl(os.P_WAIT, Defaults.CGI_PATH_TO_PENDING,
-          Defaults.CGI_PATH_TO_PENDING, "-qrb", Msgs[MsgIdx])
-      # white subcommand
-      elif Form["subcmd"].value == "white":
-        os.spawnl(os.P_WAIT, Defaults.CGI_PATH_TO_PENDING,
-          Defaults.CGI_PATH_TO_PENDING, "-qWb", Msgs[MsgIdx])
-        os.spawnl(os.P_WAIT, Defaults.CGI_PATH_TO_PENDING,
-          Defaults.CGI_PATH_TO_PENDING, "-qrb", Msgs[MsgIdx])
-      # black subcommand
-      elif Form["subcmd"].value == "black":
-        os.spawnl(os.P_WAIT, Defaults.CGI_PATH_TO_PENDING,
-          Defaults.CGI_PATH_TO_PENDING, "-qBb", Msgs[MsgIdx])
-        os.spawnl(os.P_WAIT, Defaults.CGI_PATH_TO_PENDING,
-          Defaults.CGI_PATH_TO_PENDING, "-qdb", Msgs[MsgIdx])
-      del Msgs[MsgIdx]
+      try:
+        MsgObj = Pending.Message(PVars["MsgID"])
+  
+        if Form["subcmd"].value == "delete":
+          MsgObj.delete()
+        elif Form["subcmd"].value == "release":
+          MsgObj.release()
+        elif Form["subcmd"].value == "white":
+          MsgObj.whitelist()
+          MsgObj.release()
+        elif Form["subcmd"].value == "black":
+          MsgObj.blacklist()
+          MsgObj.delete()
+        del Msgs[MsgIdx]
+      except: pass
       
       # So which message are we on now?
       if len(Msgs) == 0: # Oops! None left!
@@ -157,14 +144,14 @@
       (os.environ["SCRIPT_NAME"], PVars.SID)
   
   # Read in e-mail
-  MsgObj = email.message_from_file(open(PVars["MsgID"], "r"))
+  MsgObj = Pending.Message(PVars["MsgID"])
   
   if PVars["Headers"] == "all":
     # Generate all headers
     MsgHTML = """<a href="%s?cmd=view&headers=short&SID=%s"><img 
   src="display/shorthead.gif" width="100" height="65" align="right" border="0" 
   alt="Show Short Headers"></a><pre>""" % (os.environ["SCRIPT_NAME"], PVars.SID)
-    for Line in string.split(CgiUtil.Escape(MsgObj.as_string()), "\n"):
+    for Line in string.split(CgiUtil.Escape(MsgObj.show()), "\n"):
       if Line == "": break
       MsgHTML += Line + "\n"
     MsgHTML += "</pre>"
@@ -194,20 +181,22 @@
     <td></td>
     <td>%s</td>
   </tr>
-""" % (os.environ["SCRIPT_NAME"], PVars.SID, CgiUtil.Escape(MsgObj["from"]), 
-      CgiUtil.Escape(MsgObj["to"]), CgiUtil.Escape(MsgObj["subject"]), 
-      CgiUtil.Escape(MsgObj["date"]))
-    if MsgObj.get("cc"):
+""" % (os.environ["SCRIPT_NAME"], PVars.SID, 
+      CgiUtil.Escape(MsgObj.msgobj["from"]), 
+      CgiUtil.Escape(MsgObj.msgobj["to"]), 
+      CgiUtil.Escape(MsgObj.msgobj["subject"]), 
+      CgiUtil.Escape(MsgObj.msgobj["date"]))
+    if MsgObj.msgobj.get("cc"):
       MsgHTML += """<th>CC:</th>
     <td></td>
     <td>%s</td>
-""" % CgiUtil.Escape(MsgObj["cc"])
+""" % CgiUtil.Escape(MsgObj.msgobj["cc"])
     MsgHTML += "</table><p>"
   
   # Go through each part and generate HTML
   TextParts = 0
   Attachments = ""
-  for Part in MsgObj.walk():
+  for Part in MsgObj.msgobj.walk():
     Type = Part.get_type("text/plain")
     # Display the easily display-able parts
     if TextType.search(Type):

_______________________________________
tmda-cvs mailing list
http://tmda.net/lists/listinfo/tmda-cvs

Reply via email to