Skip to content

Commit

Permalink
Fixed #5462 -- Added Peruvian localflavor. Thanks, xbito.
Browse files Browse the repository at this point in the history
git-svn-id: http://code.djangoproject.com/svn/django/trunk@6283 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
malcolmt committed Sep 15, 2007
1 parent 885db3c commit b2f92df
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 0 deletions.
Empty file.
61 changes: 61 additions & 0 deletions django/contrib/localflavor/pe/forms.py
@@ -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

35 changes: 35 additions & 0 deletions django/contrib/localflavor/pe/pe_department.py
@@ -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'),
)

0 comments on commit b2f92df

Please sign in to comment.