# -*- coding: utf-8 -*- import re from .varchar import EmDataField as VarcharDataField class EmDataField(VarcharDataField): help = 'String field validated with a regex. Takes two options : max_length and regex' ## @brief A string field validated by a regex # @param regex str : a regex string (passed as argument to re.compile()) # @param max_length int : the max length for this field (default : 10) # @param **kwargs def __init__(self, regex='', max_length=10, **kwargs): self.regex = regex self.compiled_re = re.compile(regex) # trigger an error if invalid regex super().__init__(max_length=max_length, **kwargs) def _check_data_value(self, value): error = None if not self.compiled_re.match(value): value = '' error = TypeError('"%s" doesn\'t match the regex "%s"' % (value, self.regex)) return (value, error)