/django/contrib/localflavor/sk/forms.py
Python | 43 lines | 20 code | 6 blank | 17 comment | 0 complexity | f7fc81a23d0f4b27ee481d9dd52087cb MD5 | raw file
Possible License(s): BSD-3-Clause
- """
- Slovak-specific form helpers
- """
- from django.forms.fields import Select, RegexField
- from django.utils.translation import ugettext_lazy as _
- class SKRegionSelect(Select):
- """
- A select widget widget with list of Slovak regions as choices.
- """
- def __init__(self, attrs=None):
- from sk_regions import REGION_CHOICES
- super(SKRegionSelect, self).__init__(attrs, choices=REGION_CHOICES)
- class SKDistrictSelect(Select):
- """
- A select widget with list of Slovak districts as choices.
- """
- def __init__(self, attrs=None):
- from sk_districts import DISTRICT_CHOICES
- super(SKDistrictSelect, self).__init__(attrs, choices=DISTRICT_CHOICES)
- class SKPostalCodeField(RegexField):
- """
- A form field that validates its input as Slovak postal code.
- Valid form is XXXXX or XXX XX, where X represents integer.
- """
- default_error_messages = {
- 'invalid': _(u'Enter a postal code in the format XXXXX or XXX XX.'),
- }
- def __init__(self, *args, **kwargs):
- super(SKPostalCodeField, self).__init__(r'^\d{5}$|^\d{3} \d{2}$',
- max_length=None, min_length=None, *args, **kwargs)
- def clean(self, value):
- """
- Validates the input and returns a string that contains only numbers.
- Returns an empty string for empty values.
- """
- v = super(SKPostalCodeField, self).clean(value)
- return v.replace(' ', '')