improved some corner cases in IS_IN_SET, thanks Fran

This commit is contained in:
Massimo Di Pierro
2012-04-06 09:13:07 -05:00
parent 9d33ff85ea
commit ca3aebddd6
2 changed files with 7 additions and 6 deletions
+1 -1
View File
@@ -1 +1 @@
Version 1.99.7 (2012-04-06 09:01:07) dev Version 1.99.7 (2012-04-06 09:12:48) dev
+6 -5
View File
@@ -355,15 +355,16 @@ class IS_IN_SET(Validator):
def __call__(self, value): def __call__(self, value):
if self.multiple: if self.multiple:
### if below was values = re.compile("[\w\-:]+").findall(str(value)) ### if below was values = re.compile("[\w\-:]+").findall(str(value))
if isinstance(value, (str,unicode)): if not value:
values = [value] values = []
elif isinstance(value, (tuple, list)): elif isinstance(value, (tuple, list)):
values = value values = value
elif not value: else:
values = [] values = [value]
else: else:
values = [value] values = [value]
failures = [x for x in values if not x in self.theset] thestrset = [str(x) for x in self.theset]
failures = [x for x in values if not str(x) in thestrset]
if failures and self.theset: if failures and self.theset:
if self.multiple and (value is None or value == ''): if self.multiple and (value is None or value == ''):
return ([], None) return ([], None)