#!/usr/bin/env python "Forms example." import sys, re, os sys.path.append('../') sys.path.append('../../') import web.error; web.error.handle() import web, web.form, web.form.field.basic, web.util class ExampleForm(web.form.Form): def setup(self): self.addField(web.form.field.basic.Input('input', 'Default Text', 'Input Box:', size=14, maxlength=25)) self.addField(web.form.field.basic.Password('password', 'Default Text', 'Password Field:',size=14, maxlength=25)) self.addField(web.form.field.basic.Hidden('hiddenfield', 'Default Text','Hidden Field')) # XXX self.addField(web.form.field.basic.CheckBox('checkbox', 'DefaultValue', 'Checkbox:')) self.addField(web.form.field.basic.Button('button', 'Button Label', 'Button:')) self.addField(web.form.field.basic.TextArea('textarea', 'Text Area\n-----\nText', 'Text Area:')) self.addField(web.form.field.basic.RadioGroup('radiogroup', [('1','one'),('2','two'),('3','three')] , '3' , 'Radio Group:', align="table", cols=2)) self.addField(web.form.field.basic.Menu('menu', [('1','one'),('2','two'),('3','three')], ['2','3'], 'Menu', size=3, required=False)) self.addField(web.form.field.basic.Select('select', [('1','one'),('2','two'),('3','three')], '3', 'Select', required=True)) self.addField(web.form.field.basic.CheckBoxGroup('checkboxgroup', [('1','one'),('2','two'),('3','three')], ['1','2'], 'Check Box Group:', required=True)) self.addField(web.form.field.basic.Reset('reset', 'Reset', 'Reset Button:')) self.addField(web.form.field.basic.Submit('submit', 'Submit', 'Submit Button (normally not used):')) # The preffered way of adding submit buttons is as actions so Submit buttons are normally not used. self.addAction('Validate This Form') def valid(self): if web.form.Form.valid(self): validates = True if self.get('input').value == 'Default Text': self.get('input').setError("ERROR: You must change the text in the input box.") validates = False return validates else: return False # Print the HTTP Header print web.header('text/html') # Create a form exampleForm = ExampleForm('form', os.environ['SCRIPT_NAME'], 'get') if len(web.cgi) > 0: # Form submitted # Populate form with the values from get. # Prepare form values: values = {} for k in web.cgi.keys(): values[k] = [k,str(web.cgi[k])] if exampleForm.has_key(k): values[k].append(exampleForm[k].value) values[k].append(exampleForm[k].error()) exampleForm.populate(web.cgi) for k in web.cgi.keys(): if exampleForm.has_key(k): values[k].append(exampleForm[k].value) values[k].append(exampleForm[k].error()) if exampleForm.valid(): for k in web.cgi.keys(): if exampleForm.has_key(k): values[k].append(exampleForm[k].value) values[k].append(exampleForm[k].error()) valueText = '' for k in exampleForm.keys(): if web.cgi.has_key(k): valueText += '%s
'%values[k][0] valueText += '' valueText += ''%web.encode(repr(values[k][2])) valueText += ''%web.encode(repr(values[k][3])) valueText += ''%web.encode(repr(values[k][4])) valueText += ''%web.encode(repr(values[k][5])) valueText += ''%web.encode(repr(values[k][6])) valueText += ''%web.encode(repr(values[k][7])) valueText += '
Create%s
Error%s
Populate%s
Error%s
Validate%s
Error%s


' print "Form Test - Validated\n

It Validated!

%s\n
\n

Values

%s"%(exampleForm.frozen(), valueText) else: for k in web.cgi.keys(): if exampleForm.has_key(k): values[k].append(exampleForm[k].value) values[k].append(exampleForm[k].error()) valueText = '' for k in exampleForm.keys(): if web.cgi.has_key(k): valueText += '%s
'%values[k][0] valueText += '' valueText += ''%web.encode(repr(values[k][2])) valueText += ''%web.encode(repr(values[k][3])) valueText += ''%web.encode(repr(values[k][4])) valueText += ''%web.encode(repr(values[k][5])) valueText += ''%web.encode(repr(values[k][6])) valueText += ''%web.encode(repr(values[k][7])) valueText += '
Create%s
Error%s
Populate%s
Error%s
Validate%s
Error%s


' print "Form Test - Errors\n

Please Check Entries

%s\n
\n

Values

%s"%(exampleForm.html(), valueText) else: print "Form Test\n

Welcome Please Fill In The Form

%s\n
"%(exampleForm.html())