validation_less_field.py
1.39 KB
from .base_validation import BaseValidation
class ValidationLessField(BaseValidation):
def __init__(self, cldr, params=None):
super(ValidationLessField, self).__init__(cldr=cldr, params=params)
self.__lessvalue = None
if self.rulevalue in self.allvalues:
self.__lessvalue = self.allvalues[self.rulevalue]
self.__message = self.rulemessage or 'Value :attribute harus lebih dari :less_field.'
def validate(self):
if (self.value is None) or (self.value == ''):
ok = not self.required
else:
# ok = ((self.__lessvalue != None) and (str(self.value) < str(self.__lessvalue)))
ok = False
if self.__lessvalue is not None:
vt = self.value_type()
if vt == 'string':
ok = (str(self.value) > str(self.rulevalue))
else:
# ok = (self.value > self.rulevalue)
v = vt == 'float' and float(self.value) or int(self.value)
r = vt == 'float' and float(self.__lessvalue) or int(self.__lessvalue)
ok = (v > r)
if not ok:
lvalue = (self.__lessvalue is not None) and str(self.__lessvalue) or 'UNKNOWN'
self.colander_invalid[self.inputname] = self.__message.replace(':less_field', lvalue).replace(':attribute', self.title)
return ok