Exemplo n.º 1
0
    def obtener_rbs_general(self, gerente_id):
        """Construye la rbs general del gerente.

        Devuelve en un diccionario la informacion de las categorias
        junto con las subcategorias asociadas.

        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()
        for categoria in categorias:
            subcategorias = sub_categoria_dao.get_sub_categorias_by_categoria(
                categoria)
            rbs.append({
                "categoria": model_to_dict(categoria),
                "subcategorias": list(subcategorias.values())
            })
        return rbs
	def listar_subcategorias(self, id):
		"""
		Lista las subcategorias de un gerente
		:param id:
		:return:
		"""
		subcategoria_dao = SubcategoriaDao()
		return subcategoria_dao.listar_subcategorias(id)
	def obtener_subcategoria(self, id):
		"""
		Retorna una subcategoria a partir de un id
		:param id:
		:return:
		"""
		subcategoria_dao = SubcategoriaDao()
		return subcategoria_dao.obtener_subcategoria(id)
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
	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),
		)
Exemplo n.º 6
0
    def obtener_rbs_sugerida(self, sector_id):
        """Construye una rbs de acuerdo al sector.

        Devuelve en un diccionario la informacion de las categorias
        junto con las subcategorias asociadas.

        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      
        """
        categoria_dao = CategoriaDao()
        sector_dao = SectorDao()
        sector = sector_dao.obtener_sector(sector_id)
        categorias = categoria_dao.get_categorias_by_sector(sector)
        rbs = []
        indice = {}
        cont = 0
        sub_categoria_dao = SubcategoriaDao()
        for categoria_aux in categorias:
            categoria_nombre = indice.get(categoria_aux.categoria_nombre)
            subcategorias = sub_categoria_dao.get_sub_categorias_by_categoria_and_sector(
                categoria_aux, sector)
            if subcategorias == None:
                if (categoria_nombre == None):
                    rbs.append({"categoria": model_to_dict(categoria_aux)})
                    indice[categoria_aux.categoria_nombre] = cont
                    cont = cont + 1
            else:
                if (categoria_nombre == None):
                    rbs.append({
                        "categoria":
                        model_to_dict(categoria_aux),
                        "subcategorias":
                        self.raw_queryset_as_values_list(subcategorias)
                    })
                    indice[categoria_aux.categoria_nombre] = cont
                    cont = cont + 1
                else:
                    subcategoria_aux = rbs[indice[
                        categoria_aux.categoria_nombre]].get("subcategorias")
                    if (subcategoria_aux == None):
                        rbs[indice][
                            "subcategorias"] = self.raw_queryset_as_values_list(
                                subcategorias)
                    else:
                        subcategoria_aux = subcategoria_aux + self.raw_queryset_as_values_list(
                            subcategorias)
        return rbs
Exemplo n.º 7
0
    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
Exemplo n.º 8
0
    def crear_rbs_sugerida(self, gerente_id):
        gerente_dao = GerenteDao()
        gerente = gerente_dao.get_by_id(gerente_id)

        rbs = self.rbs_dao.crear_rbs(gerente, 2)

        categoria_dao = CategoriaDao()
        categorias = categoria_dao.get_categorias_by_sector(gerente.sector)

        sub_categoria_dao = SubcategoriaDao()

        rbs_sugerida = self.obtener_rbs_sugerida(gerente.sector.sector_id)

        for aux in rbs_sugerida:
            categoria = categoria_dao.duplicar_categoria(aux["categoria"], rbs)
            if (aux["subcategorias"]):
                for subcategoria in aux["subcategorias"]:
                    sub_categoria_dao.duplicar_sub_categoria(
                        categoria, subcategoria)
        return rbs
Exemplo n.º 9
0
    def obtener_rbs_proyecto(self, proyecto_id):
        """Construye una rbs de acuerdo al sector.

        Devuelve en un diccionario la informacion de las categorias
        junto con las subcategorias asociadas.

        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      
        """
        proyecto_dao = ProyectoDao()
        proyecto = proyecto_dao.obtener_proyecto(proyecto_id)

        categoria_dao = CategoriaDao()
        categorias = categoria_dao.get_categorias_by_proyecto(proyecto)

        sub_categoria_dao = SubcategoriaDao()

        rbs = []

        for categoria in categorias:
            subcategorias = sub_categoria_dao.get_sub_categorias_by_categoria_and_proyecto(
                categoria, proyecto)
            if subcategorias == None:
                rbs.append({"categoria": model_to_dict(categoria)})
            else:
                rbs.append({
                    "categoria":
                    model_to_dict(categoria),
                    "subcategorias":
                    self.raw_queryset_as_values_list(subcategorias)
                })
        return rbs