1 | """ |
---|
2 | Sistema Estadístico Integral de Venezuela - (SEIVEN) |
---|
3 | |
---|
4 | Copyleft (@) 2015 CENDITEL nodo Mérida - https://mpv.cenditel.gob.ve/seiven |
---|
5 | """ |
---|
6 | ## @namespace base.fields |
---|
7 | # |
---|
8 | # Contiene las clases, atributos y métodos para los campos personalizados a implementar en los formularios |
---|
9 | # @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) |
---|
10 | # @author <a href='http://www.cenditel.gob.ve'>Centro Nacional de Desarrollo e Investigación en Tecnologías Libres |
---|
11 | # (CENDITEL) nodo Mérida - Venezuela</a> |
---|
12 | # @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
13 | from __future__ import unicode_literals |
---|
14 | |
---|
15 | import logging |
---|
16 | |
---|
17 | from django.forms import MultiValueField, ChoiceField, CharField, TextInput |
---|
18 | from django.utils.translation import ugettext_lazy as _ |
---|
19 | |
---|
20 | from .constant import ( |
---|
21 | TIPO_DOCUMENTO_IDENTIFICACION |
---|
22 | ) |
---|
23 | from .widgets import ( |
---|
24 | TipoDocumentoWidget, TipoDocumentoWidgetReadOnly |
---|
25 | ) |
---|
26 | |
---|
27 | """! |
---|
28 | Contiene el objeto que registra la vitacora de eventos del módulo base. |
---|
29 | (configuración en el settings de la aplicación) |
---|
30 | """ |
---|
31 | logger = logging.getLogger("base") |
---|
32 | |
---|
33 | |
---|
34 | class TipoDocumentoField(MultiValueField): |
---|
35 | """! |
---|
36 | Clase que agrupa los campos del tipo de rif, número de rif y dígito validador del rif en un solo campo del |
---|
37 | formulario |
---|
38 | |
---|
39 | @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) |
---|
40 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
41 | @date 26-04-2016 |
---|
42 | @version 2.0.0 |
---|
43 | """ |
---|
44 | widget = TipoDocumentoWidget |
---|
45 | default_error_messages = { |
---|
46 | 'invalid_choices': _("Debe seleccionar un tipo de documento válido") |
---|
47 | } |
---|
48 | |
---|
49 | def __init__(self, *args, **kwargs): |
---|
50 | |
---|
51 | error_messages = { |
---|
52 | 'required': _("Debe indicar un numero de documento"), |
---|
53 | 'invalid': _("El valor indicado no es válido"), |
---|
54 | 'incomplete': _("El número del documento está incompleto") |
---|
55 | } |
---|
56 | |
---|
57 | fields = ( |
---|
58 | ChoiceField(choices=TIPO_DOCUMENTO_IDENTIFICACION), |
---|
59 | CharField(max_length=8, min_length=8) |
---|
60 | ) |
---|
61 | |
---|
62 | label = _("Cedula o Pasaporte:") |
---|
63 | |
---|
64 | super(TipoDocumentoField, self).__init__( |
---|
65 | error_messages=error_messages, fields=fields, label=label, require_all_fields=True, *args, **kwargs |
---|
66 | ) |
---|
67 | |
---|
68 | def compress(self, data_list): |
---|
69 | |
---|
70 | if data_list: |
---|
71 | return ''.join(data_list) |
---|
72 | return '' |
---|