def test_form(req): # get_var_info = {'len': len(args)} var_info = OrderedDict(( ('form_keys', req.form.keys()), ('form_values', ', '.join(tuple(uni(req.form.getvalue(key)) for key in req.form.keys()))), ('form_getfirst', '%s,%s' % (req.form.getfirst('pname'), req.form.getfirst('px'))), ('form_getlist', '%s,%s' % (req.form.getlist('pname'), req.form.getlist('px'))), ('', ''), ('args_keys', req.args.keys()), ('args_values', ', '.join(tuple(uni(req.args[key]) for key in req.args.keys()))), ('args_getfirst', '%s,%s' % (req.args.getfirst('gname'), req.args.getfirst('gx'))), ('args_getlist', '%s,%s' % (req.args.getlist('gname'), req.args.getlist('gx'))), )) buff = get_header("HTTP Form args test") + \ (get_crumbnav(req), "<h2>Get Form</h2>", '<form method="get">', '<input type="text" name="gname" value="Ondřej"><br/>', '<input type="text" name="gsurname" value="Tůma"><br/>', '<input type="text" name="gx" value="1">' '<input type="text" name="gx" value="2">' '<input type="text" name="gx" value="3"><br/>', '<input type="submit" name="btn" value="Send">' '</form>', "<h2>Post Form</h2>", '<form method="post">', '<input type="text" name="pname" value="Ondřej"><br/>', '<input type="text" name="psurname" value="Tůma"><br/>', '<input type="text" name="px" value="8">' '<input type="text" name="px" value="7">' '<input type="text" name="px" value="6"><br/>', '<input type="submit" name="btn" value="Send">' '</form>', "<h2>Variables</h2>", "<table>") + \ tuple("<tr><td>%s:</td><td>%s</td></tr>" % (key, html(val)) for key, val in var_info.items()) + \ ("</table>", "<h2>Browser Headers</h2>", "<table>") + \ tuple("<tr><td>%s:</td><td>%s</td></tr>" % (key, val) for key, val in req.headers_in.items()) + \ ("</table>", "<h2>Request Variables </h2>", "<table>") + \ tuple("<tr><td>%s:</td><td>%s</td></tr>" % (key, val) for key, val in get_variables(req)) + \ ("</table>",) + \ get_footer() for line in buff: req.write(line + '\n') return state.OK
def test_upload(req): var_info = OrderedDict(( ('form_keys', req.form.keys()), ('form_value_names', ', '.join(tuple(req.form[key].name for key in req.form.keys()))), ('form_value_types', ', '.join(tuple(req.form[key].type for key in req.form.keys()))), ('form_value_fnames', ', '.join(tuple(uni(req.form[key].filename) for key in req.form.keys()))), ('form_value_lenghts', ', '.join(tuple(uni(req.form[key].length) for key in req.form.keys()))), ('form_value_files', ', '.join(tuple(uni(req.form[key].file) for key in req.form.keys()))), ('form_value_lists', ', '.join(tuple( 'Yes' if req.form[key].list else 'No' for key in req.form.keys()))), )) files = [] for key in req.form.keys(): if req.form[key].filename: files.append("<h2>%s</h2>" % req.form[key].filename) files.append("<i>%s</i>" % req.form[key].type) if req.form[key].type.startswith('text/'): files.append("<pre>%s</pre>" % html(req.form.getvalue(key).decode('utf-8'))) else: files.append("<pre>%s</pre>" % encodestring(req.form.getvalue(key)).decode()) buff = get_header('HTTP file upload test') + \ (get_crumbnav(req), "<h2>Upload Form</h2>", '<form method="post" enctype="multipart/form-data">', '<input type="file" name="file_0"><br/>', '<input type="file" name="file_1"><br/>', '<input type="file" name="file_2"><br/>', '<input type="submit" name="btn" value="Upload">' '</form>', "<h2>Uploaded File</h2>", "<table>") + \ tuple("<tr><td>%s:</td><td>%s</td></tr>" % (key, html(val)) for key, val in var_info.items()) + \ ("</table>",) + \ tuple(files) + \ get_footer() for line in buff: req.write(line + '\n') return state.OK
def html(s): s = uni(s) s = s.replace('&', '&') s = s.replace('>', '>') s = s.replace('<', '<') return s