source: seiven/usuario/models.py

Last change on this file was 64cb313, checked in by Ing. Roldan D. Vargas G <rvargas@…>, 7 años ago

agregado parametro on_delete en atributos de claves foráneas debido a modificaciones en futuras versiones de django

  • Propiedad mode establecida a 100644
File size: 3.8 KB
Línea 
1"""
2Sistema Estadístico Integral de Venezuela - (SEIVEN)
3
4Copyleft (@) 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>
13from __future__ import unicode_literals
14from django.contrib.auth.models import User
15from django.core import validators
16from django.db import models
17from django.utils import six
18from django.utils.encoding import python_2_unicode_compatible
19from django.utils.translation import ugettext_lazy as _
20
21from base.constant import TIPO_DOCUMENTO_IDENTIFICACION, OCUPACION, NIVELES_ACCESO
22from base.models import Institucion
23
24
25@python_2_unicode_compatible
26class 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))
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.