Exemplo n.º 1
0
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>
        """)
Exemplo n.º 2
0
    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."
Exemplo n.º 3
0
    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."
Exemplo n.º 4
0
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>
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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