Issue 1506: length argument wrong with unicode

This commit is contained in:
mdipierro
2013-05-27 10:33:37 -05:00
parent 0138b1782d
commit 69c888d071
2 changed files with 13 additions and 7 deletions
+1 -1
View File
@@ -1 +1 @@
Version 2.4.7-stable+timestamp.2013.05.25.18.35.29
Version 2.4.7-stable+timestamp.2013.05.27.10.32.53
+12 -6
View File
@@ -315,15 +315,21 @@ class IS_LENGTH(Validator):
length = 0
if self.minsize <= length <= self.maxsize:
return (value, None)
elif isinstance(value, (str, unicode, list)):
elif isinstance(value, str):
try:
lvalue = len(value.decode('utf8'))
except:
lvalue = len(value)
if self.minsize <= lvalue <= self.maxsize:
return (value, None)
elif isinstance(value, unicode):
if self.minsize <= len(value) <= self.maxsize:
return (value.encode('utf8'), None)
elif isinstance(value, (tuple, list)):
if self.minsize <= len(value) <= self.maxsize:
return (value, None)
elif self.minsize <= len(str(value)) <= self.maxsize:
try:
value.decode('utf8')
return (value, None)
except:
pass
return (str(value), None)
return (value, translate(self.error_message)
% dict(min=self.minsize, max=self.maxsize))