Source code for localflavor.ua.forms

from django.forms.fields import RegexField, Select
from django.utils.translation import gettext_lazy as _

from .ua_regions import UA_REGION_CHOICES


[docs]class UARegionSelect(Select): """ A Select widget that uses a list of Ukrainian regions as its choices. .. versionadded:: 1.5 """ def __init__(self, *args, **kwargs): kwargs['choices'] = UA_REGION_CHOICES super().__init__(*args, **kwargs)
[docs]class UAVatNumberField(RegexField): """ A form field that validates input as a Ukrainian analog of a VAT number. Valid format is XXXXXXXXXX. Whitespace around a VAT number is accepted and automatically trimmed. .. versionadded:: 1.5 """ default_error_messages = { 'invalid': _('Enter a valid VAT number.'), } def __init__(self, **kwargs): kwargs['max_length'] = kwargs['min_length'] = 10 super().__init__(r'^\d{10}$', **kwargs)
[docs] def to_python(self, value): value = super().to_python(value) if value in self.empty_values: return value return value.strip()
[docs]class UAPostalCodeField(RegexField): """ A form field that validates input as a Ukrainian postal code. Valid format is XXXXX. Note: first two numbers cannot be '00'. Whitespace around a postal code is accepted and automatically trimmed. .. versionadded:: 1.5 """ default_error_messages = { 'invalid': _('Enter a valid postal code.'), } def __init__(self, **kwargs): kwargs['max_length'] = kwargs['min_length'] = 5 super().__init__(r'^(?!00)\d{5}$', **kwargs)
[docs] def to_python(self, value): value = super().to_python(value) if value in self.empty_values: return value return value.strip()