def getNavegacionFromIdFase(self, id_fase): '''Muestra la Navegacion''' fm = FaseManager() fase = fm.getById(int(id_fase)) proyecto = ProyectoManager().getById(fase.id_proyecto) navegacion = dict(id_fase = fase.id_fase, id_proyecto = fase.id_proyecto, fase = fase.nombre, proyecto=proyecto.nombre, admin_sistema=False) return (fase, navegacion)
def getItemsAprobados(self,id_fase): '''Obtiene los items desaprobados de una determinada fase @param: id_fase @return: lista de items aprobados de la fase''' im = ItemManager() fm = FaseManager() items = im.getItemsAprobados(id_fase) fase_actual = fm.getById(id_fase) lista = [] if fase_actual.orden != 1 : #Comprobar relaciones de los items for item in items : #por cada item en la lista de items aprobados relaciones = self.getByItem(item.id_item) #obtener sus relaciones bandera = False if relaciones: #Si tiene relaciones for relacion in relaciones: if im.esActual(relacion.id_item1) and im.esActual(relacion.id_item2): #la relacion es valida bandera= True break if bandera: lista.append(item) else: #es la primera fase lista = items return lista
def calcularImpacto(self, id_item, direccion): nodos = [] self.construir(nodos,id_item,id_item, direccion) impacto = 0 iman = ItemManager() fman = FaseManager() for nodo in nodos: print nodo.nombre impacto = impacto + nodo.complejidad print "El impacto es:", impacto graph = pydot.Dot(graph_type='digraph') count = 0 for nodo in nodos: count = count + 1 if count == 1: for nodo in nodos: graph = pydot.Dot(graph_type='digraph') fase1 = fman.getNombreById(nodo.fase) impresion = nodo.nombre + " - Fase "+ fase1 + " - Costo "+str(nodo.complejidad) node_a = pydot.Node(str(impresion), style= "filled", fillcolor = "white") graph.add_node(node_a) else: for nodo in nodos: for relacion in nodo.relaciones: item = iman.getById(relacion) fase1 = fman.getNombreById(nodo.fase) fase2 = fman.getNombreById(item.id_fase) edge = pydot.Edge(nodo.nombre + " - Fase: "+fase1 + " - Costo: "+str(nodo.complejidad), item.identificador + " - Fase: "+fase2 + " - Costo: "+str(item.complejidad)) graph.add_edge(edge) pathname = os.path.dirname(sys.argv[0]) ruta = os.path.abspath(pathname) ruta = ruta + "/sgp/public/images/grafo.png" graph.write_png(ruta) return impacto
def items(self, *args, **kw): '''Muestra la lista de items ''' params=kw fase, navegacion = self.verificarPermiso(params) id_proyecto=fase.id_proyecto if ProyectoManager().getById(id_proyecto).estado=='creado': flash(('Debe finalizar la creacion del proyecto para acceder a una fase'), 'warning') raise redirect("/fase/fases_por_proyecto", id_proyecto=id_proyecto, link_creacion=True) busqueda_filler = ItemTableFiller(DBSession) busqueda_filler.init(kw["id_fase"]) tmpl_context.widget = self.table value = busqueda_filler.get_value() permiso,globo_relaciones, globo_tipos, globo_lb = self.getPermisos(int(kw['id_fase'])) globo_revivir = EvaluarPermiso("Crear Item", id_fase = kw['id_fase'] ).is_met(request.environ) fm = FaseManager() fase = fm.getById(kw['id_fase']) mostrar_new = False if fase.estado == 'desarrollo' or fase.estado== 'finalizado': mostrar_new = True return dict(value_list=value, model="Item",tipo_items=fase.tipo_items,id_fase=kw['id_fase'],\ navegacion=navegacion, if_permiso = permiso, if_relaciones = globo_relaciones, \ if_tipos = globo_tipos\ ,if_lb = globo_lb, mostrar_new = mostrar_new, if_revivir = globo_revivir)
def buscar(self, **kw): '''Muestra la lista de items segun la busqueda realizada''' params = kw try: fase, navegacion = self.verificarPermiso(params) except: flash(('Direccion no valida.'), 'error') raise redirect("/index") if not(Secure().FiltrarByFase(fase.id_fase, 'lista_items')): flash(('USTED NO CUENTA CON PERMISOS SUFICIENTES.'), 'error') raise redirect("/index") busqueda_filler = BusquedaTableFiller(DBSession) busqueda_filler.init(params["parametro"],kw['id_fase']) tmpl_context.widget = self.table value = busqueda_filler.get_value() permiso,globo_relaciones, globo_tipos, globo_lb = self.getPermisos(int(params['id_fase'])) mostrar_new = False fm = FaseManager() fase = fm.getById(kw['id_fase']) if fase.estado == 'desarrollo' or fase.estado== 'finalizado': mostrar_new = True globo_revivir = EvaluarPermiso("Crear Item", id_fase = kw['id_fase'] ).is_met(request.environ) return dict(value_list=value, model="Item", tipo_items=fase.tipo_items, id_fase=kw['id_fase'],\ navegacion=navegacion, if_permiso = permiso, if_relaciones = globo_relaciones, \ if_tipos = globo_tipos,if_lb = globo_lb, mostrar_new = mostrar_new,if_revivir = globo_revivir)
def getNavegacionFromIdFase(self, id_fase): '''Obtiene el contexto de navegacion mediante el id de la fase actual''' fm = FaseManager() fase = fm.getById(int(id_fase)) proyecto = ProyectoManager().getById(fase.id_proyecto) navegacion = dict(id_fase = fase.id_fase, id_proyecto = fase.id_proyecto, fase = fase.nombre, proyecto=proyecto.nombre,admin_sistema=False) return (fase, navegacion)
def put(self, *args, **kw): '''editar''' rm = FaseManager() p = rm.getById(args) params = kw p.descripcion = params['descripcion'] p.nombre = params['nombre'] rm.update(p) raise redirect('../')
def buscar(self, **kw): params = kw busqueda_filler = BusquedaTableFiller(DBSession) busqueda_filler.init(params["parametro"],kw['id_fase']) tmpl_context.widget = self.table value = busqueda_filler.get_value() fm = FaseManager() fase = fm.getById(params['id_fase']) return dict(value_list=value, model="Item", tipo_items=fase.tipo_items, id_fase=kw['id_fase'])
def put(self, *args, **kw): '''editar''' rm = FaseManager() p = rm.getById(args) params = kw p.descripcion = params['descripcion'] p.nombre = params['nombre'] rm.update(p) raise redirect('/fase/fases_por_proyecto', id_proyecto=session['id_proyecto'])
def getItemsARelacionar(self,id_fase_actual): fm = FaseManager() fase_actual = fm.getById(id_fase_actual) lista = self.getItemsFaseActual(id_fase_actual) if fase_actual.orden != 1: #no es la primera fase fase_anterior = fm.getFaseAnterior(id_fase_actual) id_fase_anterior = fase_anterior.id_fase lista += DBSession.query(Item).filter((Item.id_fase == id_fase_anterior) & (Item.actual == 'true') & (Item.estado == 'finalizado')).all() return lista
def buscar(self, **kw): params = kw busqueda_filler = BusquedaTableFiller(DBSession) busqueda_filler.init(params["parametro"], kw['id_fase']) tmpl_context.widget = self.table value = busqueda_filler.get_value() fm = FaseManager() fase = fm.getById(params['id_fase']) return dict(value_list=value, model="Item", tipo_items=fase.tipo_items, id_fase=kw['id_fase'])
def items(self, *args, **kw): params = kw busqueda_filler = ItemTableFiller(DBSession) busqueda_filler.init(params["id_fase"]) tmpl_context.widget = self.table value = busqueda_filler.get_value() #obtener tipos de items de la fase fm = FaseManager() fase = fm.getById(params['id_fase']) session['id_fase']=fase.id_fase; session.save() session['fase']=fase.nombre; session.save() return dict(value_list=value, model="Item",tipo_items=fase.tipo_items,id_fase=params['id_fase'])
def post(self, **kw): '''Nuevo''' rm = FaseManager() params = kw '''crear la nueva fase''' fase = Fase() fase.nombre = params['nombre'] fase.descripcion = params['descripcion'] fase.id_proyecto = session['id_proyecto'] fase.estado = 'inicial' fase.nro_item=0 fase.orden= rm.generarCodigo(session['id_proyecto']) rm.add(fase) raise redirect('/fase/fases_por_proyecto',id_proyecto=session['id_proyecto'])
def addParams(self, nombre, id_fase, id_campos): r = TipoItem() r.nombre = nombre r.id_fase = id_fase r.fase = FaseManager().getById(id_fase) r.campos = self.getListaCampos(id_campos) self.add(r)
def actualizar(self, nombre, fase, id_tipo): print("Actualizacion del tipo de item: " + nombre) fases = FaseManager().getById(fase) ti = TipoItem() ti.nombre = nombre ti.id_tipo_item = id_tipo ti.fase = fases self.update(ti)
def items(self, *args, **kw): params = kw if session['estado']=='creado': flash(('Debe finalizar la creacion del proyecto para acceder a una fase'), 'warning') raise redirect("/fase/fases_por_proyecto", id_proyecto=session['id_proyecto'], link_creacion=True) busqueda_filler = ItemTableFiller(DBSession) busqueda_filler.init(params["id_fase"]) tmpl_context.widget = self.table value = busqueda_filler.get_value() #obtener tipos de items de la fase fm = FaseManager() fase = fm.getById(params['id_fase']) session['id_fase']=fase.id_fase; session.save() session['fase']=fase.nombre; session.save() return dict(value_list=value, model="Item",tipo_items=fase.tipo_items,id_fase=params['id_fase'])
def buscar(self, **kw): params = kw busqueda_filler = BusquedaTableFiller(DBSession) busqueda_filler.init(params["parametro"]) tmpl_context.widget = self.table value = busqueda_filler.get_value() cantidad = FaseManager().cantidad(int(session['id_proyecto'])) return dict(value_list=value, model="Fase", cant_fases=cantidad)
def items(self, *args, **kw): params = kw busqueda_filler = ItemTableFiller(DBSession) busqueda_filler.init(params["id_fase"]) tmpl_context.widget = self.table value = busqueda_filler.get_value() #obtener tipos de items de la fase fm = FaseManager() fase = fm.getById(params['id_fase']) session['id_fase'] = fase.id_fase session.save() session['fase'] = fase.nombre session.save() return dict(value_list=value, model="Item", tipo_items=fase.tipo_items, id_fase=params['id_fase'])
def newRelacion(self, *args, **kw): """Display a page to show a new record.""" rm = ItemManager() fm = FaseManager() id_fase = kw['id_fase'] items1 = rm.getItemsFaseActual(id_fase) items = rm.getItemsARelacionar(id_fase) items2 = [] for item in items: fase = fm.getNombreById(item.id_fase) i = ItemARelacionar() i.identificador = item.identificador i.fase = fase i.id_item = item.id_item items2.append(i) return dict(value=kw, model=self.model.__name__, items1=items1, items2= items2, id_fase = kw['id_fase'])
def s_ordenar(self, *args, **kw): params = kw print params if params['submit'] == "terminar": for i in params['posicion']: orden, fase = i.split('#') FaseManager().ordenarFase(int(orden), int(fase)) self.terminar() else: raise redirect('/fase/fases_por_proyecto?id_proyecto=' + session['id_proyecto'])
def post(self, **kw): '''Nuevo''' rm = FaseManager() params = kw '''crear la nueva fase''' fase = Fase() fase.nombre = params['nombre'] fase.descripcion = params['descripcion'] fase.id_proyecto = session['id_proyecto'] fase.estado = 'inicial' fase.nro_item = 0 fase.orden = 0 codigo = rm.generarCodigo(session['id_proyecto']) print codigo fase.codigo = codigo rm.add(fase) raise redirect('/fase/fases_por_proyecto?id_proyecto=' + session['id_proyecto'])
def getItemsARelacionar(self,id_item_actual): '''Obtener la lista de items para relacionar @param id_item_actual: id de item con el cual se quiere crear una relacion ''' item = self.getById(id_item_actual) id_fase_actual = item.id_fase fm = FaseManager() fase_actual = fm.getById(id_fase_actual) lbm = LineaBaseManager() lista = self.getItemsFaseActualRelacion(id_fase_actual, id_item_actual) if fase_actual.orden != 1: #no es la primera fase fase_anterior = fm.getFaseAnterior(id_fase_actual) id_fase_anterior = fase_anterior.id_fase lista_items = DBSession.query(Item).filter((Item.id_fase == id_fase_anterior) & (Item.actual == 'true') & (Item.estado == 'finalizado')).all() for item in lista_items: lb = lbm.getById(item.id_linea_base) if lb.estado == 'valido'or lb.estado == 'liberado': lista.append(item) return lista
def post (self, **kw): """Agrega una nueva linea base a la base de datos""" if not 'id_fase' in kw: flash(('Direccion no valida'), 'error') raise redirect("/index") if not(Secure().FiltrarByFase(int(kw['id_fase']),'crear_lb')): flash(('USTED NO CUENTA CON PERMISOS SUFICIENTES'), 'error') raise redirect("/index") if kw['Aceptar']=="Cancelar": raise redirect("/lineaBase", id_fase=kw['id_fase']) linea_base = LineaBase() lbm = LineaBaseManager() im = ItemManager() fm = FaseManager() id_items = session['items_lb'] #lista de id_items que formaran parte de la LB try: id_items.sort() except: id_items=[] id_items.append(session['items_lb']) linea_base.estado='valido' linea_base.usuario = session['id_usuario'].id_usuario fecha = datetime.date.today() linea_base.fecha = fecha linea_base.fase = kw['id_fase'] for id in id_items: item = im.getById(id) linea_base.items.append(item) lbm.add(linea_base) for id in id_items: item=im.getById(int(id)) item.estado = 'finalizado' im.update(item) '''Cambiar estado de fases''' if im.fase_finalizada(kw['id_fase']): fm.finalizar_fase(kw['id_fase']) else: fm.fase_en_desarrollo(kw['id_fase']) fm.desarrollar_fase_siguiente(kw['id_fase']) raise redirect('/lineaBase?id_fase='+str(kw["id_fase"]))
def addSinCampos(self, nombre, id_fase, descripcion, prefijo): print("Agregar tipo de item: " + nombre + " en la fase " + str(id_fase)) r = TipoItem() r.nombre = nombre r.id_fase = id_fase r.descripcion = descripcion if prefijo != "": if len(prefijo) <= 3: r.prefijo = prefijo else: r.prefijo = prefijo[0:3] else: r.prefijo = nombre[0:3] r.fase = FaseManager().getById(id_fase) b = self.verificaExistencia(id_fase, nombre) if not (b): self.add(r) return True return False
def post_delete(self, *args, **kw): pm = FaseManager() id_proyecto = pm.getById(args).id_proyecto pm.deleteById(args) raise redirect('/fase/fases_por_proyecto', id_proyecto=id_proyecto)
def _do_get_provider_count_and_objs(self, buscado="", **kw): pm = FaseManager() Campoes = pm.buscar(self.buscado, self.id_proyecto) return len(Campoes), Campoes
def post_delete(self, *args, **kw): pm = FaseManager() pm.deleteById(args) raise redirect('./')
def _do_get_provider_count_and_objs(self, buscado="", **kw): pm = FaseManager() Fasees = pm.buscar_por_proyecto(self.buscado) return len(Fasees), Fasees
def s_ordenar(self, *args, **kw): params = kw for i in params['posicion']: orden, fase = i.split('#') FaseManager().ordenarFase(int(orden), int(fase)) self.terminar()
def _do_get_provider_count_and_objs(self, buscado="", **kw): pm = FaseManager() Campoes = pm.buscar(self.buscado, session['id_proyecto']) return len(Campoes), Campoes