2015-07-09 5 views
0

Я использую FormEncode в Python http://formencode.readthedocs.org/en/latest/modules/national.html#module-formencode.national.Добавление пользовательского валидатора для новой страны

Я пытаюсь добавить собственный валидатор почтовых индексов для Бразилии. Я прочитал документацию, но ничто из этого не помогает. Кто-нибудь имеет представление о том, как подойти к этому?

ответ

0

В случае, если кто хочет знать, как решить это с помощью FormEncode, это решение, которое я придумал

class BrazilZipValidator(validators.Regex): 
messages = { 
    'invalid': _('Please enter a valid code (nnnnn-nnn or nnnnnnnn)') 
} 
regex = re.compile(r'^([0-9]{8})$|^([0-9]{5}-[0-9]{3})$') 
strip = True 

def _to_python(self, value, state): 
    self.assert_string(value, state) 
    match = self.regex.search(value) 
    if not match: 
     raise formencode.Invalid(self.message('invalid', state), value, \ 
           state) 
    return match.group() 

Затем присоедините этот класс для объекта проверки

national.PostalCodeInCountryFormat._vd.update({'BR': BrazilZipValidator})