This file is indexed.

/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