from django.db import models
from django.core.validators import MaxValueValidator
from adaptor.model import CsvDbModel, CsvModel
from django.contrib.auth.models import User
from adaptor.fields import *
from utils.models import (
Estado, Municipio, Parroquia,
TipoDocumento
)
from .constantes import CHOICE_LOCALIDAD
class Alcance(models.Model):
"""!
Clase que contiene las opciones del Alcance
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@version 1.0.0
"""
opcion_alcance = models.CharField(max_length=128)
activo = models.BooleanField(default=True)
def __str__(self):
"""!
Fucncion que muestra el identificador del area estrategica
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@param self {object} Objeto que instancia la clase
@return Devuelve el identificador de la opcion
"""
return self.opcion_alcance
class Sector(models.Model):
"""!
Clase que contiene las opciones del sector
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 18-08-2016
@version 1.0.0
"""
opcion_sector = models.CharField(max_length=128)
activo = models.BooleanField(default=True)
def __str__(self):
"""!
Fucncion que muestra la informacion sobre las opciones
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 18-08-2016
@param self {object} Objeto que instancia la clase
@return Devuelve los datos del proyecto
"""
return self.opcion_sector
class ObjetivosHistorico(models.Model):
"""!
Clase que contiene las opciones de los objetivos Historico
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 18-08-2016
@version 1.0.0
"""
nivel = models.CharField('nivel', primary_key=True, max_length=5)
objetivo = models.CharField(max_length=500)
def __str__(self):
"""!
Fucncion que muestra la informacion sobre el objetivo Historico
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 18-08-2016
@param self {object} Objeto que instancia la clase
@return Devuelve los datos sobre el objetivo Historico
"""
return self.nivel + '-' + self.objetivo
def __unicode__(self):
return self.nivel
class ObjetivosNacional(models.Model):
"""!
Clase que contiene las opciones de los Objetivos Nacional
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 18-08-2016
@version 1.0.0
"""
fk_objetivo_historico = models.ForeignKey(ObjetivosHistorico, verbose_name="Objetivo Historico")
nivel = models.CharField('nivel', primary_key=True, max_length=5)
objetivo = models.CharField(max_length=500)
def __str__(self):
"""!
Fucncion que muestra la informacion sobre los Objetivos Nacional
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 18-08-2016
@param self {object} Objeto que instancia la clase
@return Devuelve los datos sobre los objetivos Nacional
"""
return self.nivel + '-' + self.objetivo
def __unicode__(self):
return self.nivel
class ObjetivosEstrategico(models.Model):
"""!
Clase que contiene las opciones de los Objetivos Estrategicos
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 18-08-2016
@version 1.0.0
"""
fk_objetivo_nacional = models.ForeignKey(ObjetivosNacional, verbose_name="Objetivo Nacional")
nivel = models.CharField('nivel', primary_key=True, max_length=10)
objetivo = models.CharField(max_length=800)
def __str__(self):
"""!
Fucncion que muestra la informacion sobre los Objetivos Estrategicos
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 18-08-2016
@param self {object} Objeto que instancia la clase
@return Devuelve los datos sobre los Objetivos Estrategicos
"""
return self.nivel + '-' + self.objetivo
def __unicode__(self):
return self.nivel
class ObjetivosGeneral(models.Model):
"""!
Clase que contiene las opciones de los Objetivos Generales
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 18-08-2016
@version 1.0.0
"""
fk_objetivo_estrategico = models.ForeignKey(ObjetivosEstrategico, verbose_name="Objetivo Estratégico")
nivel = models.CharField('nivel', primary_key=True, max_length=13)
objetivo = models.CharField(max_length=2300)
def __str__(self):
"""!
Fucncion que muestra la informacion sobre los Objetivos Generales
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 18-08-2016
@param self {object} Objeto que instancia la clase
@return Devuelve los datos sobre los Objetivos Generales
"""
return self.nivel + '-' + self.objetivo
def __str__(self):
return self.nivel
class TipoProyecto(models.Model):
"""!
Clase que contiene los datos para el tipo de proyecto
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 02-06-2017
@version 1.0.0
"""
tipo_proyecto = models.CharField(max_length=97)
descripcion = models.TextField()
class Meta:
"""!
Clase que construye los meta datos del modelo
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 02-06-2017
@version 1.0.0
"""
ordering = ('tipo_proyecto',)
verbose_name = 'Tipo de Proyecto'
verbose_name_plural = 'Tipos de Proyectos'
def __str__(self):
return self.tipo_proyecto
class Proyecto(models.Model):
"""!
Clase que contiene los Proyectos de Alta Ingeniería del Pais
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@version 1.0.0
"""
fk_tipo = models.ForeignKey(TipoProyecto, verbose_name="Tipo de Proyecto")
fk_user = models.ForeignKey(User)
codigo = models.CharField(max_length=15, unique=True)
nombre = models.CharField(max_length=128)
descripcion = models.TextField(blank=True)
objetivo_general = models.CharField(max_length=128)
justificacion = models.TextField(blank=True)
fecha_inicio = models.DateField(auto_now=False)
fecha_culminacion = models.DateField(auto_now=False)
plurianual = models.BooleanField(default=True)
monto_anho_anterior = models.DecimalField(max_digits=50, decimal_places=2, null=True)
monto_anho_proximo = models.DecimalField(max_digits=50, decimal_places=2, null=True)
monto_total = models.DecimalField(max_digits=50, decimal_places=2, null=True)
poan = models.BooleanField(default=True)
localidad = models.ForeignKey(Parroquia)
activo = models.BooleanField(default=True)
class Meta:
"""!
Clase que construye los meta datos del modelo
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 02-06-2017
@version 1.0.0
"""
ordering = ('nombre',)
verbose_name = 'Proyecto'
verbose_name_plural = 'Proyectos'
def __str__(self):
"""!
Fucncion que muestra la informacion sobre el proyecto
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@param self {object} Objeto que instancia la clase
@return Devuelve los datos del proyecto
"""
return self.codigo
class ObjetivosEspecificosProy(models.Model):
"""!
Clase que contiene el modelo de datos de los objetivos especificos del proyecto
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 02-06-2017
@version 1.0.0
"""
fk_proyecto = models.ForeignKey(Proyecto)
objetivos_especificos = models.CharField(max_length=255)
class Meta:
"""!
Clase que construye los meta datos del modelo
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 02-06-2017
@version 1.0.0
"""
ordering = ('objetivos_especificos',)
verbose_name = 'Objetivo Especifico'
verbose_name_plural = 'Objetivos Especificos'
def __str__(self):
return str(self.fk_proyecto)
class Responsable(models.Model):
"""!
Clase que contiene el modelo de datos para el Responsable
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 02-06-2017
@version 1.0.0
"""
fk_documento = models.ForeignKey(TipoDocumento)
cedula = models.CharField(max_length=12, verbose_name='Documento de identidad')
nombres = models.CharField(max_length=128)
apellidos = models.CharField(max_length=128)
correo = models.EmailField(max_length=75)
numero_telefono = models.CharField(max_length=11)
class Meta:
"""!
Clase que construye los meta datos del modelo
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 02-06-2017
@version 1.0.0
"""
ordering = ('cedula',)
verbose_name = 'Responsable'
verbose_name_plural = 'Responsables'
abstract = True
def __str__(self):
return self.cedula
class ResponsableTecnico(Responsable):
"""!
Clase que contiene el modelo de datos para el Responsable Tecnico
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 02-06-2017
@version 1.0.0
"""
fk_proyecto = models.ForeignKey(Proyecto)
class Meta:
"""!
Clase que construye los meta datos del modelo
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 02-06-2017
@version 1.0.0
"""
ordering = ('cedula',)
verbose_name = 'Responsable Tecnico'
verbose_name_plural = 'Responsables Tecnicos'
unique_together = (('fk_proyecto', 'cedula'),)
def __str__(self):
return self.cedula
class ResponsableGerente(Responsable):
"""!
Clase que contiene el modelo de datos para el Responsable Tecnico
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 02-06-2017
@version 1.0.0
"""
fk_proyecto = models.ForeignKey(Proyecto)
class Meta:
"""!
Clase que construye los meta datos del modelo
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 02-06-2017
@version 1.0.0
"""
ordering = ('cedula',)
verbose_name = 'Responsable Gerente'
verbose_name_plural = 'Responsables Gerentes'
def __str__(self):
return self.cedula
class VinculacionPndes(models.Model):
"""!
Clase que contiene la vinculacion con
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@version 1.0.0
"""
fk_objetivo_generales = models.ForeignKey(ObjetivosGeneral, verbose_name="Objetivo General")
vinculacion_activa = models.BooleanField(default=True)
def __int__(self):
"""!
Fucncion que muestra el identificador de la vinculacion
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@param self {object} Objeto que instancia la clase
@return Devuelve el identificador de la vinculacion
"""
return self.pk
class AreasEstrategica(models.Model):
"""!
Clase que contiene las opciones de las areas estrategicas
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@version 1.0.0
"""
fk_objetivo_historico = models.ForeignKey(VinculacionPndes, verbose_name="PNDES")
fk_proyecto = models.ForeignKey(Proyecto, verbose_name="Proyecto")
activo = models.BooleanField(default=True)
def __int__(self):
"""!
Fucncion que muestra el identificador del area estrategica
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@param self {object} Objeto que instancia la clase
@return Devuelve el identificador de la opcion
"""
return self.pk
class SubProyecto(models.Model):
"""!
Clase que contiene los SubProyectos que perteneces a proyectos de Alta Ingeniería del Pais
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@version 1.0.0
"""
fk_proyecto = models.ForeignKey(Proyecto, verbose_name="Proyecto")
parroquia = models.ForeignKey(Parroquia, verbose_name="Parroquia")
codigo = models.CharField(max_length=15, unique=True)
nombre = models.CharField(max_length=128)
descripcion_bien_servicio = models.TextField(blank=True)
unidad_medida = models.CharField(max_length=10)
meta = models.IntegerField(validators=[MaxValueValidator(999)])
fecha_inicio = models.DateField(auto_now=False)
fecha_culminacion = models.DateField(auto_now=False)
comunidad = models.CharField(max_length=10)
monto_subproyecto = models.DecimalField(max_digits=50, decimal_places=2)
activo = models.BooleanField(default=True)
def __str__(self):
"""!
Fucncion que muestra la informacion sobre el subproyecto
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@param self {object} Objeto que instancia la clase
@return Devuelve los datos del subproyecto
"""
return self.codigo
class AvancesProyecto(models.Model):
"""!
Clase que contiene los avances de los proyectos
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@version 1.0.0
"""
fk_proyecto = models.ForeignKey(Proyecto)
avance_subproyecto = models.IntegerField(validators=[MaxValueValidator(999)])
avance_proyecto = models.IntegerField(validators=[MaxValueValidator(999)])
fecha_avance = models.DateTimeField(auto_now_add=True)
activo = models.BooleanField(default=True)
def __int__(self):
"""!
Fucncion que muestra el identificador del avance del proyecto
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@param self {object} Objeto que instancia la clase
@return Devuelve el identificador del avance del proyecto
"""
return self.pk
class Actividad(models.Model):
"""!
Clase que contiene las Actividades de los subproyectos
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@version 1.0.0
"""
fk_subproyecto = models.ForeignKey(SubProyecto, verbose_name="Sub-Proyecto")
descripcion = models.CharField(max_length=128)
unidad_medida = models.CharField(max_length=10)
fecha_inicio = models.DateField(auto_now=False)
fecha_culminacion = models.DateField(auto_now=False)
horas_estimadas_ejecucion = models.IntegerField(validators=[MaxValueValidator(9999999999)])
costo_estimadao_ejecucion = models.DecimalField(max_digits=50,
decimal_places=2)
peso_actividad = models.IntegerField(validators=[MaxValueValidator(999)])
cantidad_estimada_trabajo = models.IntegerField(validators=[MaxValueValidator(999)])
activo = models.BooleanField(default=True)
def __int__(self):
"""!
Fucncion que muestra el identificador de la actividad
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@param self {object} Objeto que instancia la clase
@return Devuelve el identificador de la actividad
"""
return self.pk
class CronogramaTarea(models.Model):
"""!
Clase que contiene las Tareas de las actividades
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@version 1.0.0
"""
fk_actividad = models.ForeignKey(Actividad)
nombre = models.CharField(max_length=128)
horas_estimadas_tarea = models.IntegerField(validators=[MaxValueValidator(9999999999)])
costo_estimado_tarea = models.DecimalField(max_digits=50, decimal_places=2)
peso_tarea = models.IntegerField(validators=[MaxValueValidator(999)])
fin_comiento_tarea = models.BooleanField(default=True)
comienzo_comienzo_tarea = models.BooleanField(default=False)
fin_fin_tarea = models.BooleanField(default=False)
activo = models.BooleanField(default=True)
def __int__(self):
"""!
Fucncion que muestra el identificador de la tarea
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@param self {object} Objeto que instancia la clase
@return Devuelve el identificador de la tarea
"""
return self.pk
class EstatusCosto(models.Model):
"""!
Clase que contiene los Estatus para el avance de una Actividad
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@version 1.0.0
"""
opcion_costo = models.CharField(max_length=30)
activo = models.BooleanField(default=True)
def __str__(self):
"""!
Fucncion que muestra el identificador del estatus costo
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@param self {object} Objeto que instancia la clase
@return Devuelve el identificador del estatus costo
"""
return self.opcion_costo
class EstatusActividad(models.Model):
"""!
Clase que contiene los Estatus para el avance de una Actividad
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@version 1.0.0
"""
opcion_actividad = models.CharField(max_length=30)
activo = models.BooleanField(default=True)
def __str__(self):
"""!
Fucncion que muestra el identificador del estatus de la actividad
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@param self {object} Objeto que instancia la clase
@return Devuelve el identificador del estatus de la actividad
"""
return self.opcion_actividad
class AvanceActvidad(models.Model):
"""!
Clase que contiene el Reporte de avance de las actividades
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@version 1.0.0
"""
fk_actividad = models.ForeignKey(Actividad)
fk_estatus_actividad = models.ForeignKey(EstatusActividad)
fk_estatus_costo = models.ForeignKey(EstatusCosto)
horas_invertidas = models.IntegerField(validators=[MaxValueValidator(999)])
costo = models.IntegerField(validators=[MaxValueValidator(9999999999)])
peso_ejecutado = models.IntegerField(validators=[MaxValueValidator(999)])
cantidad_trabajo_realizado = models.IntegerField(validators=[MaxValueValidator(999)])
fecha_avance = models.DateTimeField(auto_now_add=True)
activo = models.BooleanField(default=True)
def __int__(self):
"""!
Fucncion que muestra el identificador del avance de las actividades
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@param self {object} Objeto que instancia la clase
@return Devuelve el identificador del avance de las actividades
"""
return self.pk
class Indicador(models.Model):
"""!
Clase que contiene los indicadores
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@version 1.0.0
"""
fk_avance = models.ForeignKey(AvanceActvidad)
indicador_avance = models.IntegerField(validators=[MaxValueValidator(999)])
indicador_rendimiento_costo = models.IntegerField(validators=[MaxValueValidator(999)])
avance_respeto_tiempo = models.IntegerField(validators=[MaxValueValidator(999)])
activo = models.BooleanField(default=True)
def __int__(self):
"""!
Fucncion que muestra el identificador de los indicadores
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 16-08-2016
@param self {object} Objeto que instancia la clase
@return Devuelve el identificador de el Indicador de los proyectos
"""
return self.pk
class CargaMasivaObjetivosHistoricos(CsvDbModel):
class Meta:
delimiter = "|"
dbModel = ObjetivosHistorico
has_header = False
class CargaMasivaObjetivosNacional(CsvModel):
fk_objetivo_historico = ForeignKey(ObjetivosHistorico)
class Meta:
delimiter = "|"
dbModel = ObjetivosNacional
has_header = True
class CargaMasivaObjetivosEstrategico(CsvModel):
fk_objetivo_nacional = ForeignKey(ObjetivosNacional)
class Meta:
delimiter = "|"
dbModel = ObjetivosEstrategico
has_header = True
class CargaMasivaObjetivosGeneral(CsvModel):
fk_objetivo_estrategico = ForeignKey(ObjetivosEstrategico)
class Meta:
delimiter = "|"
dbModel = ObjetivosGeneral
has_header = True