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>
""")