pyweblib.forms (version 0.13.0)
index
/usr/lib/python2.1/site-packages/pyweblib/forms.py

pyweblib.forms - class library for handling <FORM> input
(c) by Michael Stroeder <michael@stroeder.com>
 
This module is distributed under the terms of the
GPL (GNU GENERAL PUBLIC LICENSE) Version 2
(see http://www.gnu.org/copyleft/gpl.html)
 
Python compability note:
This module only works with Python 2.0 since all string parameters
are assumed to be Unicode objects and string methods are used instead
string module.

 
Modules
            
pyweblib.helper
os
re
sys
types
urllib

 
Classes
            
exceptions.Exception
FormException
ContentLengthExceeded
InvalidFormEncoding
InvalidRequestMethod
InvalidValueFormat
InvalidValueLen
ParamsMissing
TooManyValues
UndeclaredFieldName
Field
Checkbox
Input
HiddenInput
Password
Keygen
Radio
Select
Textarea
Form

 
class Checkbox(Field)
      Check boxes:
<INPUT TYPE=CHECKBOX>
 
  
__init__(self, name, text, maxValues=1, required=0, accessKey='', default=None, checked=0)
pattern and maxLen are determined by default
_accessKeyAttr(self) from Field
_defaultHTML(self) from Field
_encodeValue(self, value) from Field
_labelHTML(self, label) from Field
_patternAndOptions(self, pattern) from Field
_validateFormat(self, value) from Field
_validateLen(self, value) from Field
_validateMaxValue(self) from Field
getValue(self) from Field
inputHTML(self, label=0)
setCharset(self, charset) from Field
setDefault(self, default) from Field
setRegex(self, pattern) from Field
setValue(self, value) from Field
valueHTML(self) from Field

 
class ContentLengthExceeded(FormException)
      Overall length of input data too large.
 
Attributes:
contentLength         received content length
maxContentLength      maximum valid content length
 
  
__getitem__(...) from exceptions.Exception
__init__(self, contentLength, maxContentLength)
__str__(self)
html(self) from FormException

 
class Field
      Base class for all kind of single input fields.
 
In most cases this class is not used directly
since derivate classes for most types of input fields exist.
 
  
__init__(self, name, text, maxLen, maxValues, pattern, required=0, default=None, accessKey='')
name
    Field name used in <INPUT NAME="..">
text
    User-friendly text describing this field
maxLen
    maximum length of a single input value [Bytes]
maxValues
    maximum amount of input values
default
    default value to be used in method inputfield()
required
    flag which marks field as mandantory input field
accessKey
    key for accessing this field to be displayed by method inputHTML()
pattern
    regex pattern of valid values either as string
    or tuple (pattern,options)
_accessKeyAttr(self)
_defaultHTML(self)
HTML output of default.
_encodeValue(self, value)
Return Unicode object or string to be stored in self.value
_labelHTML(self, label)
_patternAndOptions(self, pattern)
The result is a tuple (pattern string,pattern options).
 
pattern
    Either a string containing a regex pattern,
    a tuple (pattern string, pattern options) or None.
_validateFormat(self, value)
Check format of the user's value for this field.
 
Empty input (zero-length string) are valid in any case.
You might override this method to change this behaviour.
_validateLen(self, value)
Check length of the user's value for this field.
_validateMaxValue(self)
getValue(self)
Returns self.value in case of multi-valued input or
self.value[0] if only one value is allowed.
setCharset(self, charset)
Define the character set of the user's input.
setDefault(self, default)
Set the default of a field.
 
Mainly this is used by the application if self.default shall
be changed after initializing the field object.
setRegex(self, pattern)
Set the regex pattern for validating this field.
 
Mainly this is used if self._re shall be changed after
the field object was initialized.
 
pattern
    Either a string containing a regex pattern,
    a tuple (pattern string, pattern options) or None.
    If None regex checking in _validateFormat is switched off
    (not recommended).
setValue(self, value)
Store the user's value into the field object.
 
This method can be used to modify the user's value
before storing it into self.value.
valueHTML(self)
HTML output of self.value using the HTML template string
in self.valueHTMLTemplate.

 
class Form
      Class for declaring and processing a whole <form>
 
  
__init__(self, inf=<open file '<stdin>', mode 'r'>, env={'PAGER': 'less', 'LS_COLORS': 'no=00:fi=00:di=0...PYCALIB': '/home/michael/Proj/python/pyca/pylib'}, charset='')
Initialize a Form
inf                 Read from this file object if method is POST.
env                 Dictionary holding the environment vars.
charset             Character set used when submitting the form.
                    If this is zero the charset is automatically
                    determined by looking at HTTP_ACCEPT_CHARSET.
addField(self, f)
Add a input field object to the form.
getInputFields(self, ignoreEmptyFields=0, ignoreUndeclaredFields=0, stripValues=1)
Process user's <form> input and store the values in each
field instance's content attribute.
 
When a processing error occurs FormException (or derivatives)
are raised.
 
ignoreEmptyFields=0         Ignore fields with empty input.
ignoreUndeclaredFields=0,   Ignore fields with names not declared.
                            Normally UndeclaredFieldName is raised.
stripValues=1,              If true leading and trailing whitespaces
                            are stripped from all input values.
hiddenInputFields(self, outf=<open file '<stdout>', mode 'w'>, ignoreFieldNames=[])
Output all parameters as hidden fields.
 
outf
    File object for output.
ignoreFieldNames
    Names of parameters to be excluded.

 
class FormException(exceptions.Exception)
      Base exception class to indicate form processing errors.
 
Attributes:
args          unstructured List of parameters
 
  
__getitem__(...) from exceptions.Exception
__init__(self, *args, **kwargs)
__str__(...) from exceptions.Exception
html(self)

 
class HiddenInput(Input)
      Hidden input field:
<input type="hidden">
 
  
__init__(self, name, text, maxLen, maxValues, pattern, required=0, default=None, show=0)
_accessKeyAttr(self) from Field
_defaultHTML(self) from Field
_encodeValue(self, value) from Field
_labelHTML(self, label) from Field
_patternAndOptions(self, pattern) from Field
_validateFormat(self, value) from Field
_validateLen(self, value) from Field
_validateMaxValue(self) from Field
getValue(self) from Field
inputHTML(self, label=0)
setCharset(self, charset) from Field
setDefault(self, default) from Field
setRegex(self, pattern) from Field
setValue(self, value) from Field
valueHTML(self) from Field

 
class Input(Field)
      Normal one-line input field:
<input>
 
  
__init__(self, name, text, maxLen, maxValues, pattern, required=0, default=None, accessKey='', size=None)
_accessKeyAttr(self) from Field
_defaultHTML(self) from Field
_encodeValue(self, value) from Field
_labelHTML(self, label) from Field
_patternAndOptions(self, pattern) from Field
_validateFormat(self, value) from Field
_validateLen(self, value) from Field
_validateMaxValue(self) from Field
getValue(self) from Field
inputHTML(self, label=0)
setCharset(self, charset) from Field
setDefault(self, default) from Field
setRegex(self, pattern) from Field
setValue(self, value) from Field
valueHTML(self) from Field

 
class InvalidFormEncoding(FormException)
      The form data is malformed.
 
Attributes:
param         name/value causing the exception
 
  
__getitem__(...) from exceptions.Exception
__init__(self, param)
__str__(self)
html(self) from FormException

 
class InvalidRequestMethod(FormException)
      Exception raised when HTTP request method was invalid.
 
Attributes:
method        string containing method used
 
  
__getitem__(...) from exceptions.Exception
__init__(self, method)
__str__(self)
html(self) from FormException

 
class InvalidValueFormat(FormException)
      The user's input does not match the required format.
 
Attributes:
name          name of input field (Field.name)
text          textual description of input field (Field.text)
value         input value received
 
  
__getitem__(...) from exceptions.Exception
__init__(self, name, text, value)
__str__(self)
html(self) from FormException

 
class InvalidValueLen(FormException)
      Length of user input value invalid.
 
Attributes:
name          name of input field (Field.name)
text          textual description of input field (Field.text)
valueLen      integer number of received value length
maxValueLen   integer number of maximum value length
 
  
__getitem__(...) from exceptions.Exception
__init__(self, name, text, valueLen, maxValueLen)
__str__(self)
html(self) from FormException

 
class Keygen(Field)
      Select field for client-side key generation with
Netscape/Mozilla/Opera browser:
<KEYGEN>
 
  
__init__(self, name, text, maxLen, maxValues, required=0, minKeyLength=512)
_accessKeyAttr(self) from Field
_defaultHTML(self) from Field
_encodeValue(self, value)
_labelHTML(self, label) from Field
_patternAndOptions(self, pattern) from Field
_validateFormat(self, value) from Field
_validateLen(self, value) from Field
_validateMaxValue(self) from Field
getValue(self) from Field
inputHTML(self, challenge, label=0)
setCharset(self, charset) from Field
setDefault(self, default) from Field
setRegex(self, pattern) from Field
setValue(self, value) from Field
valueHTML(self)

 
class ParamsMissing(FormException)
      Required parameters are missing.
 
Attributes:
missingParamNames     list of strings containing all names of missing
                      input fields.
 
  
__getitem__(...) from exceptions.Exception
__init__(self, missingParamNames)
__str__(self)
html(self) from FormException

 
class Password(Input)
      Password input field:
<input type=password>
 
  
__init__(self, name, text, maxLen, maxValues, pattern, required=0, default=None, accessKey='', size=None) from Input
_accessKeyAttr(self) from Field
_defaultHTML(self) from Field
_encodeValue(self, value) from Field
_labelHTML(self, label) from Field
_patternAndOptions(self, pattern) from Field
_validateFormat(self, value) from Field
_validateLen(self, value) from Field
_validateMaxValue(self) from Field
getValue(self) from Field
inputHTML(self, label=0)
setCharset(self, charset) from Field
setDefault(self, default) from Field
setRegex(self, pattern) from Field
setValue(self, value) from Field
valueHTML(self)
For security reasons only stars are printed

 
class Radio(Field)
      Radio buttons:
<INPUT TYPE=RADIO>
 
  
__init__(self, name, text, maxValues=1, required=0, default=None, accessKey='', options=[])
pattern and maxLen are determined from __init__ params
Additional parameters:
options=[]
  List of options. Either just a list of strings
  ['value1','value2',..] for simple options
  or a list of tuples of string pairs
  [('value1','description1),('value2','description2),..]
  for options with different option value and description.
_accessKeyAttr(self) from Field
_defaultHTML(self) from Field
_encodeValue(self, value) from Field
_labelHTML(self, label) from Field
_patternAndOptions(self, pattern) from Field
_validateFormat(self, value) from Field
_validateLen(self, value) from Field
_validateMaxValue(self) from Field
getValue(self) from Field
inputHTML(self, label=0)
setCharset(self, charset) from Field
setDefault(self, default)
Set the default of a default field.
 
Mainly this is used if self.default shall be changed after
initializing the field object.
setRegex(self, pattern) from Field
setValue(self, value) from Field
valueHTML(self) from Field

 
class Select(Radio)
      Select field:
<select multiple>
  <option value="value">description</option>
</select>
 
  
__init__(self, name, text, maxValues, required=0, default=None, accessKey='', options=[], size=1, ignoreCase=0, multiSelect=0)
Additional parameters:
size
  Integer for the size of displayed select field.
ignorecase
  Integer flag. If non-zero the case of input strings is ignored
  when checking input values.
multiSelect
  Integer flag. If non-zero the select field has HTML attribute
  "multiple" set.
_accessKeyAttr(self) from Field
_defaultHTML(self) from Field
_encodeValue(self, value) from Field
_labelHTML(self, label) from Field
_patternAndOptions(self, pattern) from Field
_validateFormat(self, value) from Field
_validateLen(self, value) from Field
_validateMaxValue(self) from Field
getValue(self) from Field
inputHTML(self, label=0)
setCharset(self, charset) from Field
setDefault(self, default) from Radio
setRegex(self, pattern) from Field
setValue(self, value) from Field
valueHTML(self) from Field

 
class Textarea(Field)
      Multi-line input field:
<textarea>
 
  
__init__(self, name, text, maxLen, maxValues, pattern, required=0, default=None, accessKey='', rows=10, cols=60)
_accessKeyAttr(self) from Field
_defaultHTML(self) from Field
_encodeValue(self, value) from Field
_labelHTML(self, label) from Field
_patternAndOptions(self, pattern) from Field
_validateFormat(self, value) from Field
_validateLen(self, value) from Field
_validateMaxValue(self) from Field
getValue(self) from Field
inputHTML(self, label=0)
Returns string with HTML input field.
setCharset(self, charset) from Field
setDefault(self, default) from Field
setRegex(self, pattern)
Like Field.setRegex() but pattern options re.S and re.M are
automatically added.
setValue(self, value) from Field
valueHTML(self)
HTML output of self.value using the HTML template string
in self.valueHTMLTemplate.

 
class TooManyValues(FormException)
      User's input contained too many values for same parameter.
 
Attributes:
name                  name of input field (Field.name)
text                  textual description of input field (Field.text)
valueCount            integer number of values counted with name
maxValueCount         integer number of maximum values with name allowed
 
  
__getitem__(...) from exceptions.Exception
__init__(self, name, text, valueCount, maxValueCount)
__str__(self)
html(self) from FormException

 
class UndeclaredFieldName(FormException)
      Parameter with undeclared name attribute received.
 
Attributes:
name          name of undeclared field
 
  
__getitem__(...) from exceptions.Exception
__init__(self, name)
__str__(self)
html(self) from FormException

 
Data
             _ESCAPE_HTML_CHARS = ['&', '<', '>', '"', ':', '=', '{', '}', '(', ')']
_ESCAPE_HTML_CHARS_TRANS = [('&', '&#38;'), ('<', '&#60;'), ('>', '&#62;'), ('"', '&#34;'), (':', '&#58;'), ('=', '&#61;'), ('{', '&#123;'), ('}', '&#125;'), ('(', '&#40;'), (')', '&#41;')]
__file__ = '/usr/lib/python2.1/site-packages/pyweblib/forms.pyc'
__name__ = 'pyweblib.forms'
__version__ = '0.13.0'
c = ')'