Source code for localflavor.br.models
from django.db.models.fields import CharField
from django.utils.translation import gettext_lazy as _
from . import validators
from .br_states import STATE_CHOICES
[docs]class BRStateField(CharField):
"""A model field for states of Brazil."""
description = _("State of Brazil (two uppercase letters)")
def __init__(self, *args, **kwargs):
kwargs['choices'] = STATE_CHOICES
kwargs['max_length'] = 2
super().__init__(*args, **kwargs)
[docs] def deconstruct(self):
name, path, args, kwargs = super().deconstruct()
del kwargs['choices']
return name, path, args, kwargs
[docs]class BRCPFField(CharField):
"""
A model field for the brazilian document named of CPF (Cadastro de Pessoa Física)
.. versionadded:: 2.2
"""
description = _("CPF Document")
default_error_messages = {
'invalid': _("Invalid CPF number."),
'max_digits': _("This field requires at most 11 digits or 14 characters."),
}
def __init__(self, *args, **kwargs):
kwargs['max_length'] = 14
super().__init__(*args, **kwargs)
self.validators.append(validators.BRCPFValidator())
[docs]class BRCNPJField(CharField):
"""
A model field for the brazilian document named of CNPJ (Cadastro Nacional de Pessoa Jurídica)
.. versionadded:: 2.2
"""
description = _("CNPJ Document")
def __init__(self, *args, **kwargs):
kwargs['max_length'] = 18
super().__init__(*args, **kwargs)
self.validators.append(validators.BRCNPJValidator())
[docs]class BRPostalCodeField(CharField):
"""
A model field for the brazilian zip code
.. versionadded:: 2.2
"""
description = _("Postal Code")
def __init__(self, *args, **kwargs):
kwargs['max_length'] = 9
super().__init__(*args, **kwargs)
self.validators.append(validators.BRPostalCodeValidator())