def normalize_args(parser, mpreq): """ Normalizer for Python's cgi library. """ args = {} fs = FieldStorage(mpreq) # Cast down from the FieldStorage object to Python str. for name in fs.keys(): value = fs[name] if isinstance(value, str): value = str(value) elif isinstance(value, Field): value = FileUpload(value) elif isinstance(value, list): for i in range(len(value)): if isinstance(value[i], str): value[i] = str(value[i]) elif isinstance(value[i], Field): value[i] = FileUpload(value[i]) if name: # mod_python sometimes gives a None key args[name] = value return args
def _reqArgs(req): """ Returns a dictionary of name->value pairs for request's arguments and fields. """ result = {} data = FieldStorage(req, keep_blank_values=1) for fieldName in data.keys(): fieldData = data[fieldName] if type(fieldData) is list: # on POST requests if there is name collision between a parameter and a field result[fieldName] = fieldData[-1].value else: result[fieldName] = fieldData.value return result
class Args: def __init__( self, req ): from mod_python.util import FieldStorage self.fieldStorage = FieldStorage( req, True ) # return a list of values for the given key, # or None if key not there def get( self, var ): retVar = self.fieldStorage.getlist( var ) if len( retVar ) == 0: return None else: return retVar # return a list of tuples, # (key, value) where value is a list of values def items( self ): result = []; for key in self.fieldStorage.keys(): result.append( (key, self.fieldStorage.getlist( key ) ) ) return result