Fixed #5462 -- Added Peruvian localflavor. Thanks, xbito.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@6283 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
885db3cb79
commit
b2f92dfcc5
|
@ -0,0 +1,61 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
PE-specific Form helpers.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from django.newforms import ValidationError
|
||||||
|
from django.newforms.fields import RegexField, CharField, Select, EMPTY_VALUES
|
||||||
|
from django.utils.translation import ugettext
|
||||||
|
|
||||||
|
class PEDepartmentSelect(Select):
|
||||||
|
"""
|
||||||
|
A Select widget that uses a list of Peruvian Departments as its choices.
|
||||||
|
"""
|
||||||
|
def __init__(self, attrs=None):
|
||||||
|
from pe_department import DEPARTMENT_CHOICES
|
||||||
|
super(PEDepartmentSelect, self).__init__(attrs, choices=DEPARTMENT_CHOICES)
|
||||||
|
|
||||||
|
class PEDNIField(CharField):
|
||||||
|
"""
|
||||||
|
A field that validates `Documento Nacional de IdentidadŽ (DNI) numbers.
|
||||||
|
"""
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(PEDNIField, self).__init__(max_length=8, min_length=8, *args,
|
||||||
|
**kwargs)
|
||||||
|
|
||||||
|
def clean(self, value):
|
||||||
|
"""
|
||||||
|
Value must be a string in the XXXXXXXX formats.
|
||||||
|
"""
|
||||||
|
value = super(PEDNIField, self).clean(value)
|
||||||
|
if value in EMPTY_VALUES:
|
||||||
|
return u''
|
||||||
|
if not value.isdigit():
|
||||||
|
raise ValidationError(ugettext("This field requires only numbers."))
|
||||||
|
if len(value) != 8:
|
||||||
|
raise ValidationError(ugettext("This field requires 8 digits."))
|
||||||
|
|
||||||
|
return value
|
||||||
|
|
||||||
|
class PERUCField(RegexField):
|
||||||
|
"""
|
||||||
|
This field validates a RUC (Registro Unico de Contribuyentes). A RUC is of
|
||||||
|
the form XXXXXXXXXXX.
|
||||||
|
"""
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(PERUCField, self).__init__(max_length=11, min_length=11, *args,
|
||||||
|
**kwargs)
|
||||||
|
|
||||||
|
def clean(self, value):
|
||||||
|
"""
|
||||||
|
Value must be an 11-digit number.
|
||||||
|
"""
|
||||||
|
value = super(PERUCField, self).clean(value)
|
||||||
|
if value in EMPTY_VALUES:
|
||||||
|
return u''
|
||||||
|
if not value.isdigit():
|
||||||
|
raise ValidationError(ugettext("This field requires only numbers."))
|
||||||
|
if len(value) != 11:
|
||||||
|
raise ValidationError(ugettext("This field requires 11 digits."))
|
||||||
|
return value
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
A list of Peru departaments as `choices` in a
|
||||||
|
formfield.
|
||||||
|
|
||||||
|
This exists in this standalone file so that it's only imported into memory
|
||||||
|
when explicitly needed.
|
||||||
|
"""
|
||||||
|
|
||||||
|
DEPARTMENT_CHOICES = (
|
||||||
|
('AMA', u'Amazonas'),
|
||||||
|
('ANC', u'Ancash'),
|
||||||
|
('APU', u'Apurímac'),
|
||||||
|
('ARE', u'Arequipa'),
|
||||||
|
('AYA', u'Ayacucho'),
|
||||||
|
('CAJ', u'Cajamarca'),
|
||||||
|
('CUS', u'Cusco'),
|
||||||
|
('HUV', u'Huancavelica'),
|
||||||
|
('HUC', u'Huánuco'),
|
||||||
|
('ICA', u'Ica'),
|
||||||
|
('JUN', u'Junín'),
|
||||||
|
('LAL', u'La Libertad'),
|
||||||
|
('LAM', u'Lambayeque'),
|
||||||
|
('LIM', u'Lima'),
|
||||||
|
('LOR', u'Loreto'),
|
||||||
|
('MDD', u'Madre de Dios'),
|
||||||
|
('MOQ', u'Moquegua'),
|
||||||
|
('PAS', u'Pasco'),
|
||||||
|
('PIU', u'Piura'),
|
||||||
|
('PUN', u'Puno'),
|
||||||
|
('SAM', u'San Martín'),
|
||||||
|
('TAC', u'Tacna'),
|
||||||
|
('TUM', u'Tumbes'),
|
||||||
|
('UCA', u'Ucayali'),
|
||||||
|
)
|
Loading…
Reference in New Issue