Home

  Documentation

  Download

  News

  Examples

forms.py Source Code

C:/Work/Lemon/Backups/Lemon-0.2.10/Lemon-0.2.10/../../doc/examples/code/forms.py
#!/usr/bin/env python

"Forms example."

import cgitb; cgitb.enable()
import sys, re
sys.path.append('../')
sys.path.append('../../')

import lemon
import lemon.html.form as form

class ExampleForm(form.Form):
    
    def setup(self):
        import lemon.date
        datetime = lemon.date.datetime(2002,12,11,13,12,58).isoformat(' ')
        date = lemon.date.date(2002,12,11).isoformat()
        time = lemon.date.time(21,12,7).isoformat()
        self.addField(form.Input('input', 'Default Text', 'Input Box:', size=14, maxlength=25))
        self.addField(form.Password('password', 'Default Text', 'Password Field:',size=14, maxlength=25))
        self.addField(form.Date('date', date, 'Date Field:'))
        self.addField(form.Time('time', time, 'Time Field:'))
        self.addField(form.DateTime('datetime', datetime, 'DateTime Field:'))
        self.addField(form.Hidden('hidden', 'Default Text','Hidden Field')) # XXX
        self.addField(form.CheckBox('checkbox', 'DefaultValue', 'Checkbox:'))
        self.addField(form.Button('button', 'Button Label', 'Button:'))
        self.addField(form.TextArea('textarea', 'Text Area
-----
Text', 'Text Area:'))
        self.addField(form.RadioGroup('radiogroup', [('one',1),('two',2),('three',3)] , '3' , 'Radio Group:'))
        self.addField(form.Menu('menu', [('one',1),('two',2),('three',3)], [2,'3'], 'Menu', size=3, required=False))
        self.addField(form.Select('select', [('one',1),('two',2),('three',3)], [2,'3'], 'Select', required=True))
        self.addField(form.CheckBoxGroup('checkboxgroup', [('one',1),('two',2),('three',3)], [1,'2'], 'Check Box Group:', required=True))
        self.addField(form.Reset('reset', 'Reset', 'Reset Button:'))
        self.addField(form.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 isValid(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
            

# Print the HTTP Header
print lemon.getHTTPHeader('text/html')

# Prepare form values:
values = ''
for k,v in lemon.get.items():
    values += str(k) + ': ' + str(v) + '<br>'

# Create a form

exampleForm = ExampleForm('form', 'forms.py', 'get')

if len(lemon.get) > 0: # Form submitted
    # Populate form with the values from get.
    exampleForm.populate(lemon.get)

    if exampleForm.valid():
        print "<html><head><title>Form Test - Validated</title></head><body>
<h1>It Validated!</h1>%s
<hr>
<h2>Values</h2>%s</body></html>"%(exampleForm.frozen(),values)
    else:
        print "<html><head><title>Form Test - Errors</title></head><body>
<h1>Please Check Entries</h1>%s
<hr>
<h2>Values</h2>%s</body></html>"%(exampleForm.html(),values)

else:
    print "<html><head><title>Form Test</title></head><body>
<h1>Welcome Please Fill In The Form</h1>%s
<hr>
<h2>Values</h2>%s</body></html>"%(exampleForm.html(),values)

© 2002-2003 James Gardner