/usr/share/pyshared/cherrypy/lib/form.py is in python-cherrypy 2.3.0-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | """Simple form handling module."""
import warnings
warnings.warn("cherrypy.lib.form is deprecated and might disappear in future versions of CherryPy", DeprecationWarning, stacklevel = 2)
import cherrypy
import defaultformmask
class FormField:
def __init__(self, label, name, typ, mask=None, mandatory=0, size='15',
optionList=[], defaultValue='', defaultMessage='', validate=None):
self.isField = 1
self.label = label
self.name = name
self.typ = typ
if mask is None:
self.mask = defaultformmask.defaultMask
else:
self.mask = mask
self.mandatory = mandatory
self.size = size
self.optionList = optionList
self.defaultValue = defaultValue
self.defaultMessage = defaultMessage
self.validate = validate
self.errorMessage = ""
def render(self, leaveValues):
if leaveValues:
if self.typ !='submit':
self.currentValue = cherrypy.request.params.get(self.name, "")
else:
self.currentValue = self.defaultValue
else:
self.currentValue = self.defaultValue
self.errorMessage = self.defaultMessage
return self.mask(self)
class FormSeparator:
def __init__(self, label, mask):
self.isField = 0
self.label = label
self.mask = mask
def render(self, dummy):
return self.mask(self.label)
class Form:
method = "post"
enctype = ""
def __init__(self, action = "postForm", method = "post", enctype = "", header = defaultformmask.defaultHeader, footer = defaultformmask.defaultFooter, headerLabel = "", footerLabel = ""):
self.action = action
self.method = method
self.enctype = enctype
self.header = header
self.footer = footer
self.headerLabel = headerLabel
self.footerLabel = footerLabel
def formView(self, leaveValues=0):
if self.enctype:
enctypeTag = 'enctype="%s"' % self.enctype
else:
enctypeTag = ""
res = ['<form method="%s" %s action="%s">'
% (self.method, enctypeTag, self.action)]
res.append(self.header(self.headerLabel))
for field in self.fieldList:
res.append(field.render(leaveValues))
res.append(self.footer(self.footerLabel))
res.append("</form>")
return "".join(res)
def validateFields(self):
# Should be subclassed
# Update field's errorMessage value to set an error
pass
def validateForm(self):
# Reset errorMesage for each field
for field in self.fieldList:
if field.isField:
field.errorMessage = ""
# Validate mandatory fields
for field in self.fieldList:
if (field.isField and field.mandatory
and not cherrypy.request.params.get(field.name)):
field.errorMessage = "Missing"
# Validate fields one by one
for field in self.fieldList:
if field.isField and field.validate and not field.errorMessage:
value = cherrypy.request.params.get(field.name, "")
field.errorMessage = field.validate(value)
# Validate all fields together (ie: check that passwords match)
self.validateFields()
for field in self.fieldList:
if field.isField and field.errorMessage:
return 0
return 1
def setFieldErrorMessage(self, fieldName, errorMessage):
for field in self.fieldList:
if field.isField and field.name == fieldName:
field.errorMessage = errorMessage
def getFieldOptionList(self, fieldName):
for field in self.fieldList:
if field.isField and field.name == fieldName:
return field.optionList
def getFieldDefaultValue(self, fieldName):
for field in self.fieldList:
if field.isField and field.name == fieldName:
return field.defaultValue
def setFieldDefaultValue(self, fieldName, defaultValue):
for field in self.fieldList:
if field.isField and field.name == fieldName:
field.defaultValue = defaultValue
def getFieldNameList(self, exceptList=[]):
fieldNameList = []
for field in self.fieldList:
if field.isField and field.name and field.name not in exceptList:
fieldNameList.append(field.name)
return fieldNameList
|