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 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