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 usuario.models |
---|
7 | # |
---|
8 | # Contiene las clases, atributos y métodos para el modelo de datos de usuario |
---|
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 | from django.contrib.auth.models import User |
---|
15 | from django.core import validators |
---|
16 | from django.db import models |
---|
17 | from django.utils import six |
---|
18 | from django.utils.encoding import python_2_unicode_compatible |
---|
19 | from django.utils.translation import ugettext_lazy as _ |
---|
20 | |
---|
21 | from base.constant import TIPO_DOCUMENTO_IDENTIFICACION, OCUPACION, NIVELES_ACCESO |
---|
22 | from base.models import Institucion |
---|
23 | |
---|
24 | |
---|
25 | @python_2_unicode_compatible |
---|
26 | class UserProfile(models.Model): |
---|
27 | """! |
---|
28 | Clase que gestiona los datos de los usuarios que tendrán acceso al sistema |
---|
29 | |
---|
30 | @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) |
---|
31 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
32 | @date 19-08-2016 |
---|
33 | @version 1.0.0 |
---|
34 | """ |
---|
35 | |
---|
36 | ## Contiene datos sobre el documento de identificación (cédula o pasaporte) |
---|
37 | tipo_documento = models.CharField( |
---|
38 | max_length=9, help_text=_("Cédula o pasaporte del usuario"), |
---|
39 | validators=[ |
---|
40 | validators.RegexValidator( |
---|
41 | r'^[\d]{7,8}+$', |
---|
42 | _("Introduzca un número de documento válido. Sólo se permite una letra y números con una longitud de " |
---|
43 | "8 carácteres.") |
---|
44 | ), |
---|
45 | ] |
---|
46 | ) |
---|
47 | |
---|
48 | ## Contiene datos de la ocupación, oficio o profesión del usuario |
---|
49 | ocupacion = models.CharField(max_length=2, choices=OCUPACION[1:]) |
---|
50 | |
---|
51 | ## Establece la última fecha de modificación de la contraseña, lo cual permite establecer la caducidad de la misma |
---|
52 | fecha_modpass = models.DateTimeField(null=True, blank=True, help_text=_("Fecha en la que se modificó la contraseña")) |
---|
53 | |
---|
54 | ## Contiene datos sobre la institucion a la cual pertenece el usuario |
---|
55 | institucion = models.ForeignKey(Institucion, on_delete=models.CASCADE, help_text=_("Institucion de la cual proviene el usuario")) |
---|
56 | |
---|
57 | ## Indica el nivel de acceso que tiene el usuario |
---|
58 | nivel_acceso = models.PositiveSmallIntegerField(choices=NIVELES_ACCESO, null=True, blank=True) |
---|
59 | |
---|
60 | |
---|
61 | ## Establece la relación entre el usuario y el perfil |
---|
62 | user = models.OneToOneField( |
---|
63 | User, on_delete=models.CASCADE, related_name="profile", |
---|
64 | help_text=_("Relación entre el perfil y el usuario con acceso al sistema") |
---|
65 | ) |
---|
66 | |
---|
67 | class Meta: |
---|
68 | """! |
---|
69 | Metaclase que permite establecer las propiedades de la clase UserProfile |
---|
70 | |
---|
71 | @author Ing. Roldan Vargas rvargas at cenditel.gob.ve |
---|
72 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
73 | @date 19-08-2016 |
---|
74 | @version 1.0.0 |
---|
75 | """ |
---|
76 | verbose_name = _("Perfil") |
---|
77 | verbose_name_plural = _("Perfiles") |
---|
78 | ordering = ("tipo_documento",) |
---|
79 | |
---|
80 | def __str__(self): |
---|
81 | """! |
---|
82 | Método que muestra la información sobre el perfil del usuario |
---|
83 | |
---|
84 | @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) |
---|
85 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
86 | @date 19-08-2016 |
---|
87 | @param self <b>{object}</b> Objeto que instancia la clase |
---|
88 | @return Devuelve los datos del perfil del usuario |
---|
89 | """ |
---|
90 | return "%s, %s" % (six.text_type(self.user.first_name), six.text_type(self.user.last_name)) |
---|