def showForm(): print weblib.trim( """ This page is a complete waste of bandwidth. You upload a file, and it sends it back to you. <form method="POST" enctype="multipart/form-data" action="upload.py?upload=1"> <input type="file" name="upfile" size="50"> <input name="action" type="submit" value="upload"> </form> """)
def NOT_IMPLEMENTED_test_multipart(self): #@TODO: RE-ENABLE THIS!!!!!!!!!!! return req = self.builder.build( method="POST", contentType= "multipart/form-data; boundary=---------------------------7d035c305e4", content=weblib.trim( """ -----------------------------7d035c305e4 Content-Disposition: form-data; name="upfile"; filename="mime.test" Content-Type: text/plain THIS IS A TEST THIS IS ONLY A TEST -----------------------------7d035c305e4 Content-Disposition: form-data; name="action" upload -----------------------------7d035c305e4 Content-Disposition: form-data; name="twovalues" value1 -----------------------------7d035c305e4 Content-Disposition: form-data; name="twovalues" value2 -----------------------------7d035c305e4-- """ )) #@TODO: try MIME-generation module instead of hard-coding the string.. assert request.form.get("action")=="upload", \ weblib.trim( """ form values don't work on multipart forms. (got %s) ----------- ** NOTE ** this test works when I test manually, but not via the test script.. The bug appears to be in using StringIO (rather than sys.stdin) with the cgi.FieldStorage, or in some invisible characters in the MIME stuff.. I have never been able to track it down... (help?) ----------- """ % repr(request.form.get("action"))) assert request.form["upfile"].filename == "C:\mimetest.txt", \ "file uploads don't return FieldStorage objects" assert request.form["twovalues"] == ("value1", "value2"), \ "multi-value fields break on multi-part forms."
def NOT_IMPLEMENTED_test_multipart(self): #@TODO: RE-ENABLE THIS!!!!!!!!!!! return req = self.builder.build( method="POST", contentType= "multipart/form-data; boundary=---------------------------7d035c305e4", content=weblib.trim(""" -----------------------------7d035c305e4 Content-Disposition: form-data; name="upfile"; filename="mime.test" Content-Type: text/plain THIS IS A TEST THIS IS ONLY A TEST -----------------------------7d035c305e4 Content-Disposition: form-data; name="action" upload -----------------------------7d035c305e4 Content-Disposition: form-data; name="twovalues" value1 -----------------------------7d035c305e4 Content-Disposition: form-data; name="twovalues" value2 -----------------------------7d035c305e4-- """)) #@TODO: try MIME-generation module instead of hard-coding the string.. assert request.form.get("action")=="upload", \ weblib.trim( """ form values don't work on multipart forms. (got %s) ----------- ** NOTE ** this test works when I test manually, but not via the test script.. The bug appears to be in using StringIO (rather than sys.stdin) with the cgi.FieldStorage, or in some invisible characters in the MIME stuff.. I have never been able to track it down... (help?) ----------- """ % repr(request.form.get("action"))) assert request.form["upfile"].filename == "C:\mimetest.txt", \ "file uploads don't return FieldStorage objects" assert request.form["twovalues"] == ("value1", "value2"), \ "multi-value fields break on multi-part forms."
if sale.billAddress: rec = sale.billAddress._record if sale.billAddress.email: print """ <p><b>customer: <A href="mailto:%(email)s">%(email)s</a></b></p> """ % sale.billAddress._record #@TODO: store organization? or should that be address line 1? #@TODO: logic for hiding state if not in US ## BILLING INFO rec = sale.billAddress._record import weblib print weblib.trim(""" <pre class="contentcopy"><b>Billing Info</b> %(fname)s %(lname)s""" % rec) if sale.billAddress.company: print sale.billAddress.company ## hide empty address lines for line in range(3): if string.strip(weblib.deNone(rec.get("address%i" % (line + 1), ""))) != "": print rec["address%i" % (line + 1)] print weblib.trim(""" %(city)s, %(stateCD)s, %(postal)s %(countryCD)s phone: %(phone)s</pre>
def handler(req): e=apache.build_cgi_env(req) #req.send_http_header() env = {} for bleh in e.keys(): env[bleh]=e[bleh] #print >> req, bleh, ":", e[bleh], "<br>" #return apache.OK wreq=weblib.Request(content=req.read(), environ=env) eng = ModPythonEngine(request=wreq,script="") eng.start() dir = os.sep.join(req.filename.split(os.sep)[:-1]) + os.sep os.chdir(dir) if os.path.exists(dir + ".weblib.py"): whichfile= dir + ".weblib.py" eng.execute(open(whichfile)) if (eng.result ==eng.SUCCESS) or (eng.result is None): whichfile=req.filename eng.execute(open(whichfile)) eng.stop() if eng.result in (eng.SUCCESS, eng.REDIRECT, eng.EXIT): import string headers = eng.response.getHeaders() for i in string.split(headers, "\n"): if i != "": header = string.split(i, ":") req.headers_out[header[0]] = header[1] if string.lower(header[0]) == 'content-type': req.content_type = header[1] if string.lower(header[0]) == 'status': req.status = int(header[1]) req.send_http_header() req.write(eng.response.buffer) return apache.OK else: ## print debug output print >> req, weblib.trim(""" <html> <head> <title>weblib.cgi exception</title> <style type="text/css"> body, p { background: #cccccc; font-family: verdana, arial; font-size: 75%; } pre { font-size: 120%; } pre.traceback { color: red; } pre.output{ color : green } </style> </head> <body> """) if eng.result == eng.FAILURE: print >> req, "<b>assertion failure:</b>", eng.error print >> req, "</body>\n</html>" elif eng.result == eng.EXCEPTION: ## html error message ################################# print >> req, "<b>uncaught exception while running %s</b><br>" \ % whichfile print >> req, '<pre class="traceback">' \ + weblib.htmlEncode(eng.error) + "</pre>" print >> req, "<b>script input:</b>" print >> req, '<ul>' print >> req, '<li>form: %s</li>' % eng.request.form print >> req, '<li>querystring: %s</li>' % eng.request.querystring print >> req, '<li>cookie: %s</li>' % eng.request.cookie print >> req, '</ul>' print >> req, '<b>session data:</b><br>' print >> req, '<ul>' for item in eng.sess.keys(): print >> req, '<li>', item, ': ' try: print >> req, eng.sess[item] except: print >> req, '(can\'t unpickle)' print >> req, '</li>' print >> req, '</ul>' print >> req, "<b>script output:</b>" print >> req, '<pre class="output">' + \ weblib.htmlEncode(eng.response.getHeaders()) + \ weblib.htmlEncode(eng.response.buffer) + \ "</pre>" print >> req, "<hr>" print >> req, '<a href="http://weblib.sourceforge.net/">weblib</a> ' + \ '(c) copyright 2000-2001 ' + \ '<a href="http://www.zike.net/">Zike Interactive</a>. ' + \ 'All rights reserved.' print >> req, "</body>" print >> req, "</html>" return apache.OK
def handler(req): e = apache.build_cgi_env(req) #req.send_http_header() env = {} for bleh in e.keys(): env[bleh] = e[bleh] #print >> req, bleh, ":", e[bleh], "<br>" #return apache.OK wreq = weblib.Request(content=req.read(), environ=env) eng = ModPythonEngine(request=wreq, script="") eng.start() dir = os.sep.join(req.filename.split(os.sep)[:-1]) + os.sep os.chdir(dir) if os.path.exists(dir + ".weblib.py"): whichfile = dir + ".weblib.py" eng.execute(open(whichfile)) if (eng.result == eng.SUCCESS) or (eng.result is None): whichfile = req.filename eng.execute(open(whichfile)) eng.stop() if eng.result in (eng.SUCCESS, eng.REDIRECT, eng.EXIT): import string headers = eng.response.getHeaders() for i in string.split(headers, "\n"): if i != "": header = string.split(i, ":") req.headers_out[header[0]] = header[1] if string.lower(header[0]) == 'content-type': req.content_type = header[1] if string.lower(header[0]) == 'status': req.status = int(header[1]) req.send_http_header() req.write(eng.response.buffer) return apache.OK else: ## print debug output print >> req, weblib.trim(""" <html> <head> <title>weblib.cgi exception</title> <style type="text/css"> body, p { background: #cccccc; font-family: verdana, arial; font-size: 75%; } pre { font-size: 120%; } pre.traceback { color: red; } pre.output{ color : green } </style> </head> <body> """) if eng.result == eng.FAILURE: print >> req, "<b>assertion failure:</b>", eng.error print >> req, "</body>\n</html>" elif eng.result == eng.EXCEPTION: ## html error message ################################# print >> req, "<b>uncaught exception while running %s</b><br>" \ % whichfile print >> req, '<pre class="traceback">' \ + weblib.htmlEncode(eng.error) + "</pre>" print >> req, "<b>script input:</b>" print >> req, '<ul>' print >> req, '<li>form: %s</li>' % eng.request.form print >> req, '<li>querystring: %s</li>' % eng.request.querystring print >> req, '<li>cookie: %s</li>' % eng.request.cookie print >> req, '</ul>' print >> req, '<b>session data:</b><br>' print >> req, '<ul>' for item in eng.sess.keys(): print >> req, '<li>', item, ': ' try: print >> req, eng.sess[item] except: print >> req, '(can\'t unpickle)' print >> req, '</li>' print >> req, '</ul>' print >> req, "<b>script output:</b>" print >> req, '<pre class="output">' + \ weblib.htmlEncode(eng.response.getHeaders()) + \ weblib.htmlEncode(eng.response.buffer) + \ "</pre>" print >> req, "<hr>" print >> req, '<a href="http://weblib.sourceforge.net/">weblib</a> ' + \ '(c) copyright 2000-2001 ' + \ '<a href="http://www.zike.net/">Zike Interactive</a>. ' + \ 'All rights reserved.' print >> req, "</body>" print >> req, "</html>" return apache.OK
if sale.billAddress: rec = sale.billAddress._record if sale.billAddress.email: print """ <p><b>customer: <A href="mailto:%(email)s">%(email)s</a></b></p> """ % sale.billAddress._record #@TODO: store organization? or should that be address line 1? #@TODO: logic for hiding state if not in US ## BILLING INFO rec = sale.billAddress._record import weblib print weblib.trim( """ <pre class="contentcopy"><b>Billing Info</b> %(fname)s %(lname)s""" % rec) if sale.billAddress.company: print sale.billAddress.company ## hide empty address lines for line in range(3): if string.strip(weblib.deNone(rec.get("address%i" % (line+1),""))) != "": print rec["address%i" % (line+1)] print weblib.trim( """ %(city)s, %(stateCD)s, %(postal)s %(countryCD)s