Ticket #1340: diff

File diff, 1.2 kB (added by noam, 1 year ago)

Diff of decodingfilter.py

  • /home/noam/lib/python/CherryPy-2.2.1-py2.5.egg/cherrypy/filters/decodingfilter.py

    old new  
    3838     
    3939    def decode(self, enc): 
    4040        decodedParams = {} 
     41        def strdecode(s, enc): 
     42            if isinstance(s, unicode): 
     43                return s 
     44            else: 
     45                return s.decode(enc) 
    4146        for key, value in cherrypy.request.params.items(): 
    4247            if hasattr(value, 'file'): 
    4348                # This is a file being uploaded: skip it 
    4449                decodedParams[key] = value 
    4550            elif isinstance(value, list): 
    4651                # value is a list: decode each element 
    47                 decodedParams[key] = [v.decode(enc) for v in value] 
     52                decodedParams[key] = [strdecode(v, enc) for v in value] 
    4853            else: 
    4954                # value is a regular string: decode it 
    50                 decodedParams[key] = value.decode(enc) 
     55                decodedParams[key] = strdecode(value, enc) 
    5156         
    5257        # Decode all or nothing, so we can try again on error. 
    5358        cherrypy.request.params = decodedParams