Source code for

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())