def get_riesgos_by_proyecto_2(self, proyecto): """Devuelve todos los riesgos que esten asociados a un proyecto, como un array de diccionarios """ riesgo_dao = RiesgoDao() riesgos = riesgo_dao.get_riesgos_by_proyecto(proyecto) return self.raw_queryset_of_riesgos_as_values_list(riesgos)
def obtener_respuestas_sugeridas(self, proyecto_id: int): """ Consulta todas las respuestas asociadas a los riesgos del proyecto que no se hayan utilizado dentro del mismo proyecto :param proyecto_id: :return: dict """ respuesta_dao = RespuestaDao() riesgo_dao = RiesgoDao() proyecto = Proyecto(proyecto_id=proyecto_id) riesgos = riesgo_dao.get_riesgos_by_proyecto(proyecto) aux = {} for riesgo in riesgos: key = "riesgo_" + str(riesgo.riesgo_id) aux[key] = [] respuestas = respuesta_dao.obtener_respuestas_sugeridas_from_riesgo_by_proyecto( riesgo, proyecto) for respuesta in respuestas: aux[key].append( dict( respuesta_id=respuesta.respuesta_id, respuesta_nombre=respuesta.respuesta_nombre, respuesta_descripcion=respuesta.respuesta_descripcion, )) return aux
def obtener_rbs_completa_by_proyecto(self, gerente_id, proyecto_id): """Construye la rbs con los riesgos por subcategoria del gerente. Devuelve en un diccionario la informacion de las categorias junto con las subcategorias asociadas y sus riesgos. Se encarga de consultar la rbs del gerente y a partir de su id consultar todas las categorias y subcategorias asociados. Parámetros: gerente_id -- corresponde al id del gerente en la base de datos Excepciones: ValueError -- Si gerente no existe """ gerente_dao = GerenteDao() gerente = gerente_dao.get_by_id(gerente_id) categoria_dao = CategoriaDao() categorias = categoria_dao.get_categorias_by_gerente(gerente) proyecto_dao = ProyectoDao() proyecto = proyecto_dao.obtener_proyecto(proyecto_id) rbs = [] sub_categoria_dao = SubcategoriaDao() riesgo_dao = RiesgoDao() for categoria in categorias: subcategorias = sub_categoria_dao.get_sub_categorias_by_categoria( categoria) aux = [] for subcategoria in subcategorias: riesgos = riesgo_dao.get_riesgo_by_subcategoria(subcategoria) if riesgos == None: aux.append({ "subcategoria": model_to_dict(subcategoria), "riesgos": [] }) else: riesgos = list(riesgos.values()) if (len(riesgos) > 0): for riesgo in riesgos: e = riesgo_dao.riesgo_is_proyecto( Riesgo(riesgo_id=riesgo["riesgo_id"]), proyecto) if (e != None): riesgo['is_assigned'] = True riesgo[ 'fecha_manifestacion'] = e.fecha_manifestacion.strftime( "%Y-%m-%d") else: riesgo['is_assigned'] = False aux.append({ "subcategoria": model_to_dict(subcategoria), "riesgos": riesgos }) rbs.append({ "categoria": model_to_dict(categoria), "subcategorias": aux }) return rbs
def registrar_riesgo_proyecto(self, nombre, causa, evento, efecto, tipo, subcategoria_id, proyecto_id): riesgo_dao = RiesgoDao() subcategoria_dao = SubcategoriaDao() proyecto_dao = ProyectoDao() return riesgo_dao.registrar_riesgo_proyecto( nombre, causa, evento, efecto, tipo, subcategoria_dao.obtener_subcategoria(subcategoria_id), proyecto_dao.obtener_proyecto(proyecto_id), )
def get_riesgos_by_proyecto(self, proyecto): """Devuelve todos los riesgos que esten asociados a un riesgo, devuleve como un objeto raw query """ riesgo_dao = RiesgoDao() riesgos = riesgo_dao.get_riesgos_by_proyecto(proyecto) aa = [] for riesgo in riesgos: riesgo_aux = model_to_dict(riesgo) #print("RRRRR", riesgo_aux) #riesgo_aux['fecha_manifestacion'] = riesgo.fecha_manifestacion.strftime("%Y-%m-%d") aa.append(riesgo_aux) #riesgo['fecha_manifestacion'] = riesgo['fecha_manifestacion'].strftime("%Y-%m-%d") return aa
def asosiar_riesgos_sugeridos_proyecto(self, riesgos, proyecto): p_h_r = ProyectoHasRiesgoDao() riesgo_dao = RiesgoDao() subcategoria_dao = SubcategoriaDao() categoria_dao = CategoriaDao() rbs_dao = RbsDao() rbs_controller = RbsController() rbs = rbs_controller.obtener_rbs_general(proyecto.gerente.gerente_id) rbs_model = rbs_dao.get_rbs_gerente_id(proyecto.gerente) for riesgo in riesgos: aux = riesgo_dao.obtener_riesgo(riesgo) sub_categoria_aux = aux.sub_categoria try: sub_aux = self.buscar_sub_categoria_by_uid( rbs, sub_categoria_aux) if sub_aux: riesgo_nuevo = riesgo_dao.registrar_riesgo( aux.riesgo_nombre, "Sin Causa definida", "Sin Evento definido", "Sin efecto definido", 0, 0, sub_aux) else: print("EEEEEEEEEEEE", sub_categoria_aux.categoria, rbs_model) print("CATENOMBRE", sub_categoria_aux.categoria.categoria_nombre) categoria_aux = categoria_dao.duplicar_categoria_2( sub_categoria_aux.categoria, rbs_model) print("CCCC", categoria_aux) sub_categoria_aux = subcategoria_dao.duplicar_sub_categoria_2( categoria_aux, sub_categoria_aux) print("SSSSSSS", sub_categoria_aux) rbs = rbs_controller.obtener_rbs_general( proyecto.gerente.gerente_id) print("RBSSSSS", rbs) riesgo_nuevo = riesgo_dao.clonar_riesgo( aux.riesgo_nombre, aux.riesgo_uid, sub_categoria_aux) print("RRRRRRRR", riesgo_nuevo) p_h_r.registrar_proyecto_riesgo_editado(proyecto, riesgo_nuevo) except Exception as e: raise e finally: pass return True
def generar_reporte_evaluar(self, proyecto: Proyecto): """Llamar la función Exportar, la cuál esta en la clase reporteEXCEL, a esta clase le pasamos el título de la tabla, la cabecera, los registros y el nombre del archivo xlsx (EXCEL).""" propietario = proyecto.gerente.gerente_nombre titulo = "REPORTE PROYECTO " + proyecto.proyecto_nombre cabecera = ("CÓDIGO", "RIESGO", "IMPACTO", "PROBABILIDAD", "TOTAL") riesgo_dao = RiesgoDao() riesgos = riesgo_dao.get_riesgos_by_proyecto(proyecto) registros = self.raw_queryset_as_values_list_evaluar(riesgos, proyecto) nombreEXCEL = "reporte_" + self.get_datetime() reporte = reporteEXCEL(titulo, cabecera, registros, nombreEXCEL, propietario).exportar_evaluar( proyecto.proyecto_objetivo, proyecto.proyecto_alcance) return nombreEXCEL + ".xlsx"
def generar_reporte_identificar(self, proyecto): """Llamar la función Exportar, la cuál esta en la clase reporteEXCEL, a esta clase le pasamos el título de la tabla, la cabecera, los registros y el nombre del archivo xlsx (EXCEL).""" propietario = proyecto.gerente.gerente_nombre titulo = "REPORTE PROYECTO " + proyecto.proyecto_nombre cabecera = ("CODIGO", "RIESGO", "CAUSAS", "EVENTO", "EFECTOS") riesgo_dao = RiesgoDao() riesgos = riesgo_dao.get_riesgos_by_proyecto(proyecto) registros = self.raw_queryset_as_values_list(riesgos) """registros = [(1110800310, "Andres", "Niño", "06/06/2019", "we", 43), (1110800311, "Andres", "Niño", "06/06/2019", "we", 43), (1110800312, "Andres", "Niño", "06/06/2019", "we", 43), ]""" nombreEXCEL = "reporte_" + self.get_datetime() reporte = reporteEXCEL(titulo, cabecera, registros, nombreEXCEL, propietario).Exportar() return nombreEXCEL + ".xlsx"
def editar_riesgo_proyecto(self, proyecto_id, riesgo_id, nombre, causa, evento, efecto, tipo ): riesgo_dao = RiesgoDao() proyecto_dao = ProyectoDao() proyecto_has_riesgo_dao = ProyectoHasRiesgoDao() riesgo = riesgo_dao.obtener_riesgo(riesgo_id) proyecto = proyecto_dao.obtener_proyecto(proyecto_id) #print("VARIABLES", riesgo, proyecto) proyecto_has_riesgo = proyecto_has_riesgo_dao.get_by_riesgo_and_proyecto_2(riesgo, proyecto) #print("MI OBJETO", proyecto_has_riesgo) if proyecto_has_riesgo.is_editado == 1: #proyecto_has_riesgo_dao.actualizar_fecha(proyecto_has_riesgo, fecha) return riesgo_dao.editar_riesgo(riesgo, nombre, causa, evento, efecto, tipo, riesgo.sub_categoria) else: proyecto_has_riesgo.delete() riesgo_nuevo = riesgo_dao.registrar_riesgo_2(nombre, causa, evento, efecto, tipo, riesgo.sub_categoria) proyecto_has_riesgo_dao.registrar_proyecto_riesgo_editado(proyecto, riesgo_nuevo) return riesgo_nuevo
def obtener_rbs_completa(self, gerente_id): """Construye la rbs con los riesgos por subcategoria del gerente. Devuelve en un diccionario la informacion de las categorias junto con las subcategorias asociadas y sus riesgos. Se encarga de consultar la rbs del gerente y a partir de su id consultar todas las categorias y subcategorias asociados. Parámetros: gerente_id -- corresponde al id del gerente en la base de datos Excepciones: ValueError -- Si gerente no existe """ gerente_dao = GerenteDao() gerente = gerente_dao.get_by_id(gerente_id) categoria_dao = CategoriaDao() categorias = categoria_dao.get_categorias_by_gerente(gerente) rbs = [] sub_categoria_dao = SubcategoriaDao() riesgo_dao = RiesgoDao() for categoria in categorias: subcategorias = sub_categoria_dao.get_sub_categorias_by_categoria( categoria) aux = [] for subcategoria in subcategorias: riesgos = riesgo_dao.get_riesgo_by_subcategoria(subcategoria) if riesgos == None: aux.append({ "subcategoria": model_to_dict(subcategoria), "riesgos": [] }) else: aux.append({ "subcategoria": model_to_dict(subcategoria), "riesgos": list(riesgos.values()) }) rbs.append({ "categoria": model_to_dict(categoria), "subcategorias": aux }) return rbs
def get_riesgos_sugeridos(self, sector, gerente_id): """ Busca todos los riesgos dentro de todos los proyectos de un sector especifico, excluyendo a los riesgos propios del gerente""" riesgo_dao = RiesgoDao() gerente = Gerente(gerente_id=gerente_id) r = riesgo_dao.listar_riesgos(gerente_id) riesgos_propios = self.raw_queryset_as_dictionary(r) riesgos_sugeridos = riesgo_dao.get_riesgos_by_sector_distinct_gerente(sector, gerente) riesgos_sugeridos_aux = [] for aux in riesgos_sugeridos: key = riesgos_propios.get(aux.riesgo_nombre) if (key == None): riesgos_sugeridos_aux.append(aux) return riesgos_sugeridos_aux
def get_riesgos_by_proyecto_base(self, proyecto): riesgo_dao = RiesgoDao() riesgos = riesgo_dao.get_riesgos_by_proyecto_base(proyecto) return self.raw_queryset_of_riesgos_as_values_list(riesgos)
def get_riesgos_by_proyecto_linea(self, proyecto, linea_base): riesgo_dao = RiesgoDao() return riesgo_dao.get_riesgos_by_proyecto_linea(proyecto, linea_base)
def eliminar_riesgo(self, riesgo): riesgo_dao = RiesgoDao() return riesgo_dao.eliminar_riesgo(riesgo)
def obtener_riesgo(self, id): riesgo_dao = RiesgoDao() return riesgo_dao.obtener_riesgo(id)
def editar_riesgo(self, riesgo, nombre, causa, evento, efecto, tipo, subcategoria): riesgo_dao = RiesgoDao() return riesgo_dao.editar_riesgo(riesgo, nombre, causa, evento, efecto, tipo, subcategoria)
def registrar_riesgo(self, nombre, causa, evento, efecto, tipo, subcategoria): riesgo_dao = RiesgoDao() return riesgo_dao.registrar_riesgo(nombre, causa, evento, efecto, tipo, subcategoria)
def listar_riesgos(self, id): riesgo_dao = RiesgoDao() return riesgo_dao.listar_riesgos(id)