Source code for localflavor.ua.models
from django.core.validators import RegexValidator
from django.db.models import CharField
from django.utils.translation import gettext_lazy as _
from .ua_regions import UA_REGION_CHOICES
[docs]class UARegionField(CharField):
"""
A model field which stores a Ukrainian region.
This field is represented by forms as
a :class:`~localflavor.ua.forms.UARegionSelect` field.
.. versionadded:: 1.5
"""
description = _('Ukrainian region')
def __init__(self, *args, **kwargs):
kwargs['choices'] = UA_REGION_CHOICES
kwargs['max_length'] = 5
super().__init__(*args, **kwargs)
[docs] def deconstruct(self):
name, path, args, kwargs = super().deconstruct()
del kwargs['choices']
return name, path, args, kwargs
[docs]class UAVatNumberField(CharField):
"""
A model field which stores a Ukrainian analog of a VAT number.
This field is represented by forms as
a :class:`~localflavor.ua.forms.UAVatNumberField` field.
.. versionadded:: 1.5
"""
description = _('Ukrainian VAT number')
validators = [RegexValidator(r'^\d{10}$', 'Enter a valid VAT number.')]
def __init__(self, *args, **kwargs):
kwargs['max_length'] = 10
super().__init__(*args, **kwargs)
[docs]class UAPostalCodeField(CharField):
"""
A model field which stores a Ukrainian postal code.
This field is represented by forms as
a :class:`~localflavor.ua.forms.UAPostalCodeField` field.
.. versionadded:: 1.5
"""
description = _('Ukrainian postal code')
validators = [RegexValidator(r'^(?!00)\d{5}$', 'Enter a valid postal code.')]
def __init__(self, *args, **kwargs):
kwargs['max_length'] = 5
super().__init__(*args, **kwargs)