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