| 1 | """
|
|---|
| 2 | MX-specific Form helpers
|
|---|
| 3 | """
|
|---|
| 4 |
|
|---|
| 5 | from django.forms.fields import RegexField
|
|---|
| 6 |
|
|---|
| 7 |
|
|---|
| 8 | class MXRFCField(RegexField):
|
|---|
| 9 | """
|
|---|
| 10 | A field that accepts a 'classic' Mexican RFC (Registro Federal de Contribuyentes).
|
|---|
| 11 |
|
|---|
| 12 | More info about this: http://es.wikipedia.org/wiki/Registo_Federal_de_Contribuyentes_(M%C3%A9xico)
|
|---|
| 13 | """
|
|---|
| 14 | def __init__(self, *args, **kwargs):
|
|---|
| 15 | super(MXRFCField, self).__init__(r'^[a-zA-Z]{3}[a-zA-Z\d]?(\d\d)(0[\d]{1}|1[0-2]{1})(0[\d]{1}|[1-2]{1}\d|3[0-1])[a-zA-Z\d]{3}$', *args, **kwargs)
|
|---|
| 16 |
|
|---|
| 17 | def clean(self, value):
|
|---|
| 18 | value = super(MXRFCField, self).clean(value)
|
|---|
| 19 | return value.upper()
|
|---|
| 20 |
|
|---|
| 21 |
|
|---|
| 22 | class MXCURPField(RegexField):
|
|---|
| 23 | """
|
|---|
| 24 | A field that accepts a 'classic' Mexican CURP (Clave Unica de Registro de Poblacion).
|
|---|
| 25 |
|
|---|
| 26 | More info about this: http://es.wikipedia.org/wiki/Clave_%C3%9Anica_de_Registro_de_Poblaci%C3%B3n_%28M%C3%A9xico%29
|
|---|
| 27 | """
|
|---|
| 28 | def __init__(self, *args, **kwargs):
|
|---|
| 29 | super(MXCURPField, self).__init__(r'^[a-zA-Z]{4}(\d\d)(0[\d]{1}|1[0-2]{1})(0[\d]{1}|[1-2]{1}\d|3[0-1])([hmHM]{1})[a-zA-Z]{5}\d{2}$', *args, **kwargs)
|
|---|
| 30 |
|
|---|
| 31 | def clean(self, value):
|
|---|
| 32 | value = super(MXCURPField, self).clean(value)
|
|---|
| 33 | return value.upper()
|
|---|
| 34 |
|
|---|
| 35 |
|
|---|
| 36 | class MXZIPCodeField(RegexField):
|
|---|
| 37 | """
|
|---|
| 38 | A field that accepts a 'classic' Mexican ZIP Code.
|
|---|
| 39 |
|
|---|
| 40 | More info about this: http://es.wikipedia.org/wiki/C%C3%B3digo_postal_mexicano
|
|---|
| 41 | """
|
|---|
| 42 | def __init__(self, *args, **kwargs):
|
|---|
| 43 | super(MXZIPCodeField, self).__init__(r'^(\d){5}$', *args, **kwargs)
|
|---|
| 44 |
|
|---|
| 45 |
|
|---|
| 46 |
|
|---|