def actualizar_gantt(self, proyecto_id, gantt): tarea_dao = TareaDao() proyecto_dao = ProyectoDao() proyecto = proyecto_dao.obtener_proyecto(proyecto_id) flag = False riesgos = gantt['children'] for riesgo in riesgos: actividades = riesgo['children'] for actividad in actividades: tareas = actividad['children'] for tarea in tareas: fecha_inicio_real = datetime.datetime.strptime( tarea['start_date_real'], '%Y-%m-%dT%H:%M:%S') fecha_fin_real = fecha_inicio_real + datetime.timedelta( days=int(tarea['duration_real'])) tarea_aux = Tarea(tarea_id=tarea['tarea_id'], fecha_inicio_real=fecha_inicio_real, fecha_fin_real=fecha_fin_real, duracion_real=tarea['duration_real'], tarea_estado=self.get_id_estado_text( tarea['estado_text']), tarea_observacion=tarea['observacion']) flag = tarea_dao.actualizar_tarea_bd(tarea_aux) flag = tarea_dao.actualizar_tarea_base(tarea_aux, proyecto) return flag
def listar_riesgos_respuesta_base(self, proyecto_id): proyecto_dao = ProyectoDao() p_r_r = ProyectoHasRiesgo_RespuestaDao() proyecto = proyecto_dao.obtener_proyecto(proyecto_id) respuestas = p_r_r.listar_riesgos_respuesta_base(proyecto) aux = {} for respuesta in respuestas: key = "riesgo_" + str(respuesta.riesgo_id) riesgo_aux = aux.get(key) if (riesgo_aux): riesgo_aux.append( dict(respuesta_id=respuesta.respuesta_id, respuesta_nombre=respuesta.respuesta_nombre, respuesta_descripcion=respuesta.respuesta_descripcion, tipo_respuesta=respuesta.tipo_respuesta, riesgo_has_respuesta=respuesta.riesgo_has_respuesta_id )) else: aux[key] = [] aux[key].append( dict(respuesta_id=respuesta.respuesta_id, respuesta_nombre=respuesta.respuesta_nombre, respuesta_descripcion=respuesta.respuesta_descripcion, tipo_respuesta=respuesta.tipo_respuesta, riesgo_has_respuesta=respuesta.riesgo_has_respuesta_id )) 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 actualizar_gantt(self, proyecto_id, gantt): tarea_dao = TareaDao() proyecto_dao = ProyectoDao() proyecto = proyecto_dao.obtener_proyecto(proyecto_id) flag = False for tarea in gantt['data']: if tarea['is_tarea']: if tarea['tarea_estado'] == '3' and tarea[ 'tarea_estado_old'] != '3': tarea['fecha_fin_real'] = self.get_datetime() tarea_aux = Tarea(tarea_id=tarea['tarea_id'], fecha_inicio_real=tarea['fecha_inicio_real'], fecha_fin_real=tarea['fecha_fin_real'], tarea_estado=tarea['tarea_estado'], tarea_observacion=tarea['tarea_observacion']) flag = tarea_dao.actualizar_tarea_base(tarea_aux, proyecto) return flag
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_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
def get_lineas_base(self, proyecto_id): proyecto_dao = ProyectoDao() return proyecto_dao.get_lineas_base(proyecto_id)
def has_actividades(self, proyecto_id): proyecto_dao = ProyectoDao() proyecto = Proyecto(proyecto_id=proyecto_id) return proyecto_dao.has_actividades(proyecto)
def editar_proyecto(self, proyecto, nombre, objetivo, alcance, descripcion, presupuesto, fecha_inicio, sector): proyecto_dao = ProyectoDao() return proyecto_dao.editar_proyecto(proyecto, nombre, objetivo, alcance, descripcion, presupuesto, fecha_inicio, sector)
def validar_proyecto(self, nombre, gerente_id): proyecto_dao = ProyectoDao() return proyecto_dao.validar_proyecto(nombre, gerente_id)
def obtener_proyecto(self, id): proyecto_dao = ProyectoDao() return proyecto_dao.obtener_proyecto(id)
def cerrar_proyecto(self, proyecto, fecha): proyecto_dao = ProyectoDao() return proyecto_dao.cerrar_proyecto(proyecto, fecha)
def listar_proyectos(self, id): proyecto_dao = ProyectoDao() return proyecto_dao.listar_proyectos(id)
def crear_linea_base(self, gerente_id, proyecto_id): proyecto_dao = ProyectoDao() proyecto = proyecto_dao.obtener_proyecto(proyecto_id) return proyecto_dao.crear_linea_base(gerente_id, proyecto)
def registrar_proyecto(self, nombre, objetivo, alcance, descripcion, presupuesto, fecha_inicio, gerente, sector): proyecto_dao = ProyectoDao() return proyecto_dao.registrar_proyecto(nombre, objetivo, alcance, descripcion, presupuesto, fecha_inicio, gerente, sector)
def eliminar_proyecto(self, proyecto): proyecto_dao = ProyectoDao() return proyecto_dao.eliminar_proyecto(proyecto)