validation_max.py 1.01 KB
from .base_validation import BaseValidation


class ValidationMax(BaseValidation):
    def __init__(self, cldr, params=None):
        super(ValidationMax, self).__init__(cldr=cldr, params=params)

        if self.rulevalue == '':
            raise Exception('VALIDATION MAX ERROR', '"max" value tidak dapat validasi')

        vt = self.value_type()
        self.__rulevalue = (vt == 'float') and float(self.rulevalue) or int(self.rulevalue)
        self.__message = self.rulemessage or 'Value :attribute harus kurang dari sama dengan :max.'

    def validate(self):
        if (self.value is None) or (self.value == ''):
            ok = not self.required
        else:
            if self.value_type() == 'string':
                ok = (len(self.value) <= self.__rulevalue)
            else:
                ok = (self.value <= self.__rulevalue)

        if not ok:
            self.colander_invalid[self.inputname] = self.__message.replace(':max', str(self.rulevalue)).replace(':attribute', self.title)
            
        return ok