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