Пример #1
0
 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)
Пример #2
0
 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
         
Пример #3
0
 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
Пример #4
0
 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)       
Пример #5
0
 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)
Пример #6
0
 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)
Пример #7
0
    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('../')
Пример #8
0
 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('../')
Пример #9
0
 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'])
Пример #10
0
 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'])
Пример #11
0
 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
Пример #12
0
    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'])
Пример #13
0
 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'])
Пример #14
0
 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'])
Пример #15
0
 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)
Пример #16
0
 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)
Пример #17
0
 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'])
Пример #18
0
    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)
Пример #19
0
    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'])
Пример #20
0
 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'])
Пример #21
0
 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'])
Пример #22
0
    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'])
Пример #23
0
 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
Пример #24
0
 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"]))
Пример #25
0
 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
Пример #26
0
 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)
Пример #27
0
 def _do_get_provider_count_and_objs(self, buscado="", **kw):
     pm = FaseManager()
     Campoes = pm.buscar(self.buscado, self.id_proyecto)
     return len(Campoes), Campoes
Пример #28
0
 def post_delete(self, *args, **kw):
     pm = FaseManager()
     pm.deleteById(args)
     raise redirect('./')
Пример #29
0
 def _do_get_provider_count_and_objs(self, buscado="", **kw):
     pm = FaseManager()
     Fasees = pm.buscar_por_proyecto(self.buscado)
     return len(Fasees), Fasees
Пример #30
0
 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()
Пример #31
0
 def _do_get_provider_count_and_objs(self, buscado="", **kw):
     pm = FaseManager()
     Campoes = pm.buscar(self.buscado, session['id_proyecto'])
     return len(Campoes), Campoes  
Пример #32
0
 def _do_get_provider_count_and_objs(self, buscado="", **kw):
     pm = FaseManager()
     Fasees = pm.buscar_por_proyecto(self.buscado)
     return len(Fasees), Fasees   
Пример #33
0
 def post_delete(self, *args, **kw):
     pm = FaseManager()
     pm.deleteById(args)
     raise redirect('./')