Source code for: 'tutor5_mockup.py'


#!/usr/bin/python
"""
run tutor5 logic with formMockup instead of cgi.FieldStorage()
to test: python tutor5_mockup.py > temp.html, and open temp.html
"""

import cgi, sys

# from formMockup import formMockup
class FieldMockup:                                   # mocked-up input object
    def __init__(self, str):
        self.value = str

def formMockup(**kwargs):                            # pass field=value args
    mockup = {}                                      # multichoice: [value,...]
    for (key, value) in kwargs.items():
        if type(value) != list:                      # simple fields have .value
            mockup[key] = FieldMockup(str(value))
        else:                                        # multichoice have list
            mockup[key] = []                         # to do: file upload fields
            for pick in value:
                mockup[key].append(FieldMockup(pick))
    return mockup

form = formMockup(name='Bob',
                  shoesize='Small',
                  language=['Python', 'C++', 'HTML'],
                  comment='ni, Ni, NI')

# rest same as original, less form assignment


# import cgi, sys
# form = cgi.FieldStorage()            # parse form data
print("Content-type: text/html")     # plus blank line

html = """
<TITLE>tutor5.py</TITLE>
<body text="#000000" leftmargin=0 topmargin=0 bgcolor="#C2C2C6">
<table width=850 border=0 cellspacing=0 cellpadding=0>
  <tr>
  <td align=center>
<H1>Greetings</H1>
<HR>
<table width=500>
<tr><td><H4>Your name is %(name)s</H4>
<tr><td><H4>You wear rather %(shoesize)s shoes</H4>
<tr><td><H4>Your current job: %(job)s</H4>
<tr><td><H4>You program in %(language)s</H4>
<tr><td><H4>You also said:</H4>
<P>%(comment)s</P>
</table>
<HR>"""

data = {}
for field in ('name', 'shoesize', 'job', 'language', 'comment'):
    if not field in form:
        data[field] = '(unknown)'
    else:
        if not isinstance(form[field], list):
            data[field] = form[field].value
        else:
            values = [x.value for x in form[field]]
            data[field] = ' and '.join(values)
print(html % data)
print("""
<hr><a href="/cgi-bin/getfile.py?filename=tutor5_mockup.py">View script code</a>
</table>
</td></tr></table>
""")