Пример #1
0
    def arbol (self, id_item):
        """
        Permite visualizar las relaciones de un item dado.
        """
        nom_proyecto=Variables.get_valor_by_nombre("nombre_proyecto_actual")
        nom_fase=Variables.get_valor_by_nombre("nombre_fase_actual")

        if id_item is not None:
            id_item=int(id_item)
        item=Item.get_item_by_id(id_item)
        items = Item.get_item_activados()
        Relaciones.matriz_relaciones(id_item)

        values = dict(id_item=item.id_item, 
	                   nombre_item=item.nombre_item,
	                   codigo_item=item.codigo_item,  
		               nombre_tipo_item=item.nombre_tipo_item

		                )




      
        return dict(pagina='imagen.html',values=values,nom_proyecto=nom_proyecto
                    ,nom_fase=nom_fase)
Пример #2
0
    def get_sucesores(self,id_item):
        """
        Obtiene los sucesores del item enviado como parámetro.
        """

        relaciones = DBSession.query(Relaciones).all()
        lista =[]
        hijos =[]

        if id_item is not None:
            id_item=int(id_item)

        for rel in relaciones:
            for padre in rel.padres:
                if (padre.estado_oculto=="Activo"):
                    if padre.id_item == id_item:
                        lista.append(rel.id_item_hijo)
                        hijos.append (Item.get_item_by_id(rel.id_item_hijo) )
                        break

        while len(lista)>0:
            mis_hijos=Relaciones.get_mis_id_hijos(lista[0])
            del lista[0]
            for hijo in mis_hijos:
                if hijo not in lista:
                    item=Item.get_item_by_id(int(hijo))
                    if (padre.estado_oculto=="Activo"):
                        lista.append(hijo)
                        hijos.append (item)

        return hijos
Пример #3
0
    def get_padres_habilitados(self,orden):
        """
        Obtiene los items habilitados.
        """

        if orden is not None:
            orden=int(orden)

        padres=Item.get_item_activados()                                        #cambiar esta funcion y solo traer lo que no forman ciclos
        padres.remove(Item.get_master())

        fases_habilitadas=[]
        fases_habilitadas.append(orden)
        fases_habilitadas.append(orden-1)

        aux=[]
        for padre in padres:

            c=int(padre.orden)
            if  c not in fases_habilitadas:
                aux.append(padre)
            elif (padre.estado_oculto!="Activo"):
                padres.remove(padre)

        for a in aux:
            padres.remove(a)

        return padres
Пример #4
0
    def post_recuperar_item(self, id_item, nombre_item, codigo_item, 
                nombre_tipo_item, estado, complejidad, **kw):

        if id_item is not None:
            id_item=int(id_item)

        if complejidad is not None:
            complejidad=int(complejidad)

        item = Item.version_actual(id_item)
        item.estado_oculto="Desactivado"
        version= item.version+1  

        DBSession.flush()

        item2 = Item.get_item_by_id(id_item)

        item3 = Item (nombre_item=item2.nombre_item,
                        codigo_item=item2.codigo_item, 
                        id_tipo_item=item2.id_tipo_item,
                        orden=item2.orden,
						complejidad=item2.complejidad, estado = item2.estado,
                        fase=item2.fase, proyecto=item2.proyecto,
                        creado_por =item2.creado_por, 
                        fecha_creacion = item2.fecha_creacion ,
                        version =version , estado_oculto="Activo",
                        lb_parcial=item2.lb_parcial,lb_general=item2.lb_general)
	
        DBSession.add(item3)
        DBSession.flush()
        
        adjuntos=Adjunto.get_adjuntos_by_item(item.id_item)
        for adjun in adjuntos:
            adjun.estado_oculto=item.estado_oculto
            DBSession.flush()

        mayor =Item.get_ultimo_id()
        adjuntos=Adjunto.get_adjuntos_by_item(item2.id_item)
        for adjun in adjuntos:
            adj2 = Adjunto(id_item=mayor,archivo=adjun.archivo,
                           nombre_archivo=adjun.nombre_archivo,
                           version=item3.version, 
                           estado_oculto=item3.estado_oculto    )
            DBSession.add(adj2)
            DBSession.flush() 


        flash("item recuperado!")
        redirect('/item/item')
Пример #5
0
    def impacto (self, id_item):
        """
        Permite visualizar un reporte de impacto.
        """
        nom_proyecto=Variables.get_valor_by_nombre("nombre_proyecto_actual")
        nom_fase=Variables.get_valor_by_nombre("nombre_fase_actual")

        if id_item is not None:
            id_item=int(id_item)
        item=Item.get_item_by_id(id_item)
        items = Relaciones.get_sucesores(id_item)

        impacto=item.complejidad
        for it in items:
            if (it.estado_oculto=="Activo"):
                impacto+=it.complejidad
    
        values = dict(id_item=item.id_item, 
	                   nombre_item=item.nombre_item,
	                   codigo_item=item.codigo_item,  
		               nombre_tipo_item=item.nombre_tipo_item,
                       impacto=impacto
		                )

      
        return dict(pagina='impacto.html',values=values,nom_proyecto=nom_proyecto
                    ,nom_fase=nom_fase)
Пример #6
0
    def seleccionar_fase(self,id_fase,start=0,end=5,indice=None,texto="",*kw,**args):
        """
        Selecciona una fase de un proyecto.
        """

        if id_fase is not None:
            id_fase=int(id_fase)

        nom_proyecto=Variables.get_valor_by_nombre("nombre_proyecto_actual")
        proy_act=int (Variables.get_valor_by_nombre("proyecto_actual"))

        Variables.set_valor_by_nombre("fase_actual",id_fase)
        fase=Fase.get_fase_by_id(id_fase)
        Variables.set_valor_by_nombre("nombre_fase_actual",fase.nombre_fase)
        nom_fase=Variables.get_valor_by_nombre("nombre_fase_actual")

        #items = Item.get_item_proy_fase( proy_act, id_fase)
        
        #id_fase=int(Variables.get_valor_by_nombre("fase_actual"))
        #items = Item.get_item_activados_by_fase(id_fase)
        
        paginado = 5
        if start <> 0:
            end=int(start.split('=')[1]) #obtiene el fin de pagina
            start=int(start.split('&')[0]) #obtiene el inicio de pagina
        #print start,end
        #total = len(Privilegios.get_privilegios())
        pagina_actual = ((start % end) / paginado) + 1
        if ((start % end) % paginado) <> 0:
             pagina_actual = pagina_actual + 1
        
        if indice  <> None and texto <> "":  
            items = Item.get_item_activados_by_fase_por_filtro(id_fase,indice,texto)
            total = len(privilegios)
        else:   
            items = Item.get_item_activados_by_fase_por_pagina(id_fase,start,end)
            total = len(Item.get_item_activados_by_fase(id_fase))

        lista = ['nombre','descripcion']
        param = "/fase/seleccionar_fase?id_fase=%s" % id_fase
        items = Item.get_item_activados_by_fase(id_fase)
        return dict(pagina="menu_item",items=items,nom_proyecto=nom_proyecto
                        ,nom_fase=nom_fase,paginado=paginado,inicio=start,
                        fin=end,pagina_actual=pagina_actual,total=total,
                        param=param,lista=lista)
Пример #7
0
    def post_revivir_item(self, id_item, nombre_item , codigo_item, 
                            nombre_tipo_item, estado, complejidad, **kw):
        item = Item.get_item_by_id(id_item)
        item.estado_oculto="Activo"

        DBSession.add(item)
        DBSession.flush()

        flash("item Revivido!")
        redirect('/item/item')
Пример #8
0
    def matriz_relaciones(self,id_item):
        """
        Obtiene una matriz de la relaciones.
        """

        if id_item is not None:
            id_item=int(id_item)

        antecesores=Relaciones.get_antecesores(id_item)
        sucesores=Relaciones.get_sucesores(id_item)
        item=Item.get_item_by_id(id_item)
        relacionados=[]
        usados=[]

        n = len(antecesores)+len(sucesores)+1
        for antecesor in antecesores:
            if antecesor not in relacionados:
                if (antecesor.estado_oculto=="Activo"):
                    relacionados.append(antecesor)
                    usados.append(antecesor.nombre_item)

        if item not in relacionados:
            relacionados.append(item)
            usados.append(item.nombre_item)

        for sucesor in sucesores:
            if sucesor not in relacionados:
                if (sucesor.estado_oculto=="Activo"):
                    relacionados.append(sucesor)
                    usados.append(sucesor.nombre_item)

        #Graph creation
        gr = graph()

        # Add nodes and edges
        for item in usados:
            gr.add_nodes([item])

        # Add relation and edges

        for item in relacionados:
            padres= Relaciones.get_mis_padres(item.id_item)
            if len(padres)>0:
                for padre in padres:
                    gr.add_edge((item.nombre_item, padre.nombre_item))
            else:
                #remover nodo
                print("hola")


        # Draw as PNG
        dot = write(gr)
        gvv = gv.readstring(dot)
        gv.layout(gvv,'dot')
        gv.render(gvv,'png','/home/hermann/saip2011/saip2011/public/images/arbol.png')
Пример #9
0
    def listar_item_eliminados(self):
        """Lista de item 
        """
        nom_proyecto=Variables.get_valor_by_nombre("nombre_proyecto_actual")
        nom_fase=Variables.get_valor_by_nombre("nombre_fase_actual")

        id_fase=int(Variables.get_valor_by_nombre("fase_actual"))
        items = Item.get_item_eliminados_by_fase(id_fase)

        return dict(pagina="listar_item eliminados",items=items,
                        nom_proyecto=nom_proyecto,nom_fase=nom_fase)
Пример #10
0
    def listar_item_activos (self):
        nom_proyecto=Variables.get_valor_by_nombre("nombre_proyecto_actual")
        nom_fase=Variables.get_valor_by_nombre("nombre_fase_actual")

        id_fase=int(Variables.get_valor_by_nombre("fase_actual"))
        items = Item.get_item_activados_by_fase(id_fase)
        ids=0
        for i in items:
            ids=i.id_item

        return dict(pagina="listar_item",items=items,nom_proyecto=nom_proyecto
                    ,nom_fase=nom_fase)
Пример #11
0
    def historial (self, id_item):
        nom_proyecto=Variables.get_valor_by_nombre("nombre_proyecto_actual")
        nom_fase=Variables.get_valor_by_nombre("nombre_fase_actual")

        if id_item is not None:
            id_item=int(id_item)

        id_fase=int(Variables.get_valor_by_nombre("fase_actual"))
        items = Item.get_historial(id_item)

        return dict(pagina="historial",items=items,nom_proyecto=nom_proyecto
                    ,nom_fase=nom_fase)
Пример #12
0
    def post_delete_item(self, id_item, nombre_item, codigo_item, nombre_tipo_item,
                         estado, complejidad, **kw):

        if id_item is not None:
            id_item=int(id_item)

        item = Item.get_item_by_id(id_item)
        item.estado_oculto="Eliminado"

        DBSession.flush()

        flash("item eliminado!")
        redirect('/item/item')
Пример #13
0
    def ver_mis_hijos (self, id_item):
        nom_proyecto=Variables.get_valor_by_nombre("nombre_proyecto_actual")
        nom_fase=Variables.get_valor_by_nombre("nombre_fase_actual")

        if id_item is not None:
            id_item=int(id_item)

        id_fase=int(Variables.get_valor_by_nombre("fase_actual"))
        hijos = Relaciones.get_mis_id_hijos(id_item)
        items=[]
        for hijo in hijos:
            h=Item.get_item_by_id(int(hijo))
            if (h.estado_oculto=="Activo"):
                items.append(h)
      
        return dict(pagina='ver_mis_hijos.html',items=items,nom_proyecto=nom_proyecto
                    ,nom_fase=nom_fase)
Пример #14
0
    def recuperar_item(self,id_item, *args, **kw):
        nom_proyecto=Variables.get_valor_by_nombre("nombre_proyecto_actual")
        nom_fase=Variables.get_valor_by_nombre("nombre_fase_actual")

        if id_item is not None:
            id_item=int(id_item)

        item = Item.get_item_by_id(id_item)	

        values = dict(id_item=item.id_item, 
						nombre_item=item.nombre_item,
						codigo_item=item.codigo_item,
						nombre_tipo_item=item.nombre_tipo_item, 
						estado=item.estado,
						complejidad=item.complejidad,
						)

        return dict(pagina="recuperar_item",values=values,
                        nom_proyecto=nom_proyecto,nom_fase=nom_fase)
Пример #15
0
    def descargar(self, id_adjunto):
        directorio = "/home/hermann/Descargas"

        adj = Adjunto.get_adjunto_by_id(id_adjunto)
        var=binascii.b2a_base64(adj.archivo)
        archivo=base64.b64decode(var)  
        filenameDest=directorio +"/"+str(adj.nombre_archivo)

        dirdescargavalido=self.validardir(directorio)

        # se crea el archivo y se procede a copiar el contendido del archivo
        
        if (dirdescargavalido):
            try:
             file = open(filenameDest, 'wb')        # crea el archivo destino
            except:
                return "No se pudo crear el archivo"   
            
            if not archivo: 
                return                                         
            file.write(archivo)                                 
                
            #se cierra la conexion y el archivo
                 
            file.close( )
            redirect('/item/item')

        else:

            nom_proyecto=Variables.get_valor_by_nombre("nombre_proyecto_actual")
            nom_fase=Variables.get_valor_by_nombre("nombre_fase_actual")

            item=Item.get_item_by_id(int(adj.id_item))
            values = dict(id_item=item.id_item, 
				            nombre_item=item.nombre_item, 
				            nombre_tipo_item=item.nombre_tipo_item
				            )

            return dict(pagina="listar_mis_adjuntos",adjuntos=adjuntos,
                        nom_proyecto=nom_proyecto,nom_fase=nom_fase,
                        values=values)
Пример #16
0
    def ver_adjuntos(self,id_item):
        """Lista  
        """
        nom_proyecto=Variables.get_valor_by_nombre("nombre_proyecto_actual")
        nom_fase=Variables.get_valor_by_nombre("nombre_fase_actual")

        if id_item is not None:
            id_item=int(id_item)

        item=Item.get_item_by_id(id_item)

        values = dict(id_item=item.id_item, 
				        nombre_item=item.nombre_item, 
				        nombre_tipo_item=item.nombre_tipo_item
				        )

        adjuntos=Adjunto.get_adjuntos_by_item(id_item)
       
        return dict(pagina="listar_mis_adjuntos",adjuntos=adjuntos,
                        nom_proyecto=nom_proyecto,nom_fase=nom_fase,
                        values=values)
Пример #17
0
    def agregar_item(self, *args, **kw):
        nom_fase=Variables.get_valor_by_nombre("nombre_fase_actual")
        nom_proyecto=Variables.get_valor_by_nombre("nombre_proyecto_actual")
        id_fase=int(Variables.get_valor_by_nombre("fase_actual"))
       

        fase = Fase.get_fase_by_id(id_fase)
        orden=str(fase.orden)

        padres=Relaciones.get_padres_habilitados(fase.orden)   
       
        master=[]
        
        if (fase.orden ==1):
            master.append(Item.get_master().id_item)
        else:
            master.append(0)
        tipos_items=fase.tipos_items

        return dict(pagina="agregar_item",values=kw, tipos_items=tipos_items
                    ,nom_proyecto=nom_proyecto,nom_fase=nom_fase,padres=padres,
                    master=master,orden=orden)
Пример #18
0
    def editar_item(self,id_item,*args, **kw):
        nom_proyecto=Variables.get_valor_by_nombre("nombre_proyecto_actual")
        nom_fase=Variables.get_valor_by_nombre("nombre_fase_actual")
        id_fase=int (Variables.get_valor_by_nombre("fase_actual") )

        if id_item is not None:
            id_item=int(id_item)

        id_fase=int(Variables.get_valor_by_nombre("fase_actual"))
        item = Item.get_item_by_id(id_item)
        fase = Fase.get_fase_by_id(id_fase)	

        orden=str(fase.orden)

        padres=Relaciones.get_padres_habilitados(fase.orden)   
        hijos=Relaciones.get_sucesores(id_item)
       
        master=[]
        if (fase.orden ==1):
            master.append(Item.get_master().id_item)
        else:
            master.append(0)

        for hijo in hijos:                                                      #evita que yo o algun sucesor sea mi nuevo padre
            if hijo in padres:
                padres.remove(hijo)
        for padre in padres:
            if padre.id_item == id_item:
                padres.remove(padre)

        tipos_items=fase.tipos_items

        lista=[]
        lista.append(item.id_tipo_item )

        values = dict(id_item=item.id_item, 
						nombre_item=item.nombre_item,
                        nombre_tipo_item=item.nombre_tipo_item,        
						codigo_item=item.codigo_item,
						estado=item.estado,
						complejidad=item.complejidad,
						)

        adjuntos=Adjunto.get_adjuntos_by_item(item.id_item)
 
        adjuntados=[]
        for adj in adjuntos:        
            var = dict(id_adjunto=adj.id_adjunto,
                            nombre_archivo=adj.nombre_archivo)
            adjuntados.append(var)
       
        padres2=[]        
        padr=Relaciones.get_mis_padres(id_item)
        for pad in padr:
            padres2.append(pad.id_item)

        campos= Campos.get_campos_by_item(id_item)

        return dict(pagina="editar_item",values=values,adjuntados=adjuntados,
                        nom_proyecto=nom_proyecto,nom_fase=nom_fase,
                        lista=lista,tipos_items=tipos_items,padres=padres,
                        padres2=padres2,master=master,orden=orden,campos=campos)
Пример #19
0
    def put_item(self, id_item, nombre_item, nombre_tipo_item, complejidad,
                    id_campos,nombre_campo,tipo_campo,dato,
                     padres,asmSelect0,adjunto=None,adjuntados=None):

        if id_item is not None:
            id_item=int(id_item)


        item = Item.get_item_by_id(id_item)
        items= Item.get_nombres_items()
        items.remove(item.nombre_item)
        
        if nombre_item not in items:

            if id_campos is not None:
                if not isinstance(id_campos, list):
                    id_campos = [id_campos]

            if nombre_campo is not None:
                if not isinstance(nombre_campo, list):
                    nombre_campo = [nombre_campo]

            if tipo_campo is not None:
                if not isinstance(tipo_campo, list):
                    tipo_campo = [tipo_campo]

            if dato is not None:
                if not isinstance(dato, list):
                    dato = [dato]


            if complejidad is not None:
                complejidad=int(complejidad)

            if adjuntados is not None:
                if not isinstance(adjuntados, list):
                    adjuntados = [adjuntados]
                if len(adjuntados)<1:
                    adjuntados =[]

            if adjunto is not None:
                if not isinstance(adjunto, list):
                    adjunto = [adjunto]

            if padres is not None:
                if not isinstance(padres, list):
                    padres = [padres]
                padres = [DBSession.query(Item).get(padre) for padre
                                         in padres]


            item.estado_oculto="Desactivado"
            DBSession.flush()

            version=item.version+1

            item2 = Item (nombre_item=nombre_item ,
                         codigo_item=item.codigo_item ,
                         id_tipo_item=item.id_tipo_item , 
                         complejidad=complejidad,
                         estado = item.estado ,
                         orden=item.orden,
                         fase=int(Variables.get_valor_by_nombre
                                ("fase_actual")),
                         proyecto=int(Variables.get_valor_by_nombre
                                ("proyecto_actual")),
                         creado_por=Variables.get_valor_by_nombre
                                ("usuario_actual"),
                        fecha_creacion = time.ctime() ,
                        version =version ,estado_oculto="Activo",
                        lb_parcial=item.lb_parcial,lb_general=item.lb_general)

            DBSession.add(item2)
            DBSession.flush()

            indice=0
            id_item=Item.get_ultimo_id()        
            for c in id_campos:
                if len(c)>0:
                    camp =Campos(id_item=id_item,
                                    nombre_campo=nombre_campo[indice],
                                    tipo_campo=tipo_campo[indice],
                                    dato=dato[indice])
                    DBSession.add(camp)
                    indice+=1

            mayor =Item.get_ultimo_id()
            relacion = Relaciones (id_item_hijo=mayor,padres=padres)

            if adjunto is not None:
                for adj in adjunto:
                    if len(str(adj))==0:
                        break
                    if len(adj.filename)==0:
                        break
                    data = adj.file.read()
                    encode=base64.b64encode(data)
                    var=binascii.a2b_base64(encode)
                    adj = Adjunto (id_item=mayor, archivo=var,
                                    nombre_archivo=adj.filename,version=item2.version,
                                    estado_oculto=item2.estado_oculto)

                    DBSession.add(adj)
                    DBSession.flush() 

            adjuntos=Adjunto.get_adjuntos_by_item(item.id_item)
            for adjun in adjuntos:
                if adjuntados is not None:
                    if adjun.nombre_archivo in adjuntados:
                        adj2 = Adjunto(id_item=mayor,archivo=adjun.archivo,
                                       nombre_archivo=adjun.nombre_archivo,
                                       version=item2.version, 
                                       estado_oculto=item2.estado_oculto    )
                        DBSession.add(adj2)
                        DBSession.flush() 
                
                adjun.estado_oculto=item.estado_oculto
                DBSession.flush()

            flash("Item Modificado!")
            redirect('/item/item')

        else:
            nom_proyecto=Variables.get_valor_by_nombre("nombre_proyecto_actual")
            nom_fase=Variables.get_valor_by_nombre("nombre_fase_actual")

            padres=Item.get_item_activados()                                        #cambiar esta funcion y solo traer lo que no forman ciclos
            id_fase=int(Variables.get_valor_by_nombre("fase_actual"))          
            fase = Fase.get_fase_by_id(id_fase)	
            tipos_items=fase.tipos_items

            lista=[]
            lista.append(item.nombre_tipo_item )
            item = DBSession.query(Item).get(id_item)

            values = dict(id_item=id_item, 
				            nombre_item=nombre_item,        
				            codigo_item=item.codigo_item,
    			            complejidad=complejidad,
				            )

            adjuntos=Adjunto.get_adjuntos_by_item(item.id_item)
     
            adjuntados=[]
            for adj in adjuntos:        
                var = dict(id_adjunto=adj.id_adjunto,
                                nombre_archivo=adj.nombre_archivo)
                adjuntados.append(var)

            padres2=[]        
            padr=Relaciones.get_mis_padres(id_item)
            for pad in padr:
                padres2.append(pad.id_item)

            flash("EL NOMBRE DEL ITEM YA ESXISTE!")
            return dict(pagina="editar_item",values=values,adjuntados=adjuntados,
                            nom_proyecto=nom_proyecto,nom_fase=nom_fase,
                            lista=lista,tipos_items=tipos_items,padres=padres,
                            padres2=padres2)
Пример #20
0
    def post_item(self, nombre_item, complejidad, adjunto, id_tipo_item,
                    asmSelect0,padres=None):

        items= Item.get_nombres_items()

        if nombre_item not in items:
        
            if id_tipo_item is not None:
                id_tipo_item = int(id_tipo_item)

            if complejidad is not None:
                complejidad=int(complejidad)

            if adjunto is not None:
                if not isinstance(adjunto, list):
                    adjunto = [adjunto]

            if padres is not None:
                if not isinstance(padres, list):
                    padres = [padres]
                padres = [DBSession.query(Item).get(padre) for padre
                                         in padres]

#----------------------------------------

            tipo_item =Tipo_Item.get_tipo_item_by_id(id_tipo_item)
            pre_codigo=tipo_item.codigo_tipo_item

            proy_act=int (Variables.get_valor_by_nombre("proyecto_actual"))
            fas_act=int (Variables.get_valor_by_nombre("fase_actual"))
            fase=Fase.get_fase_by_id(fas_act)

            codigo_item=Item.crear_codigo(id_tipo_item,
                                            pre_codigo,proy_act,fas_act)

            item = Item (nombre_item=nombre_item, codigo_item=codigo_item,
                            id_tipo_item=id_tipo_item, 
	                        complejidad=complejidad, estado = "nuevo", 
                            fase=fas_act,proyecto=proy_act,orden=fase.orden,
	                        creado_por=Variables.get_valor_by_nombre("usuario_actual"),
	                        fecha_creacion = time.ctime(), version =1 ,
                            estado_oculto="Activo",lb_parcial=0,lb_general=0
	                        )

            DBSession.add(item)
            DBSession.flush()

#----------------------------------------

            for padre in padres:
                if padre.nombre_item == "master":
                    padres.remove(padre)
           
            mayor =int(Item.get_ultimo_id())
        
            relacion = Relaciones (id_item_hijo=mayor,padres=padres)

#----------------------------------------
            id_item2=Item.get_ultimo_id()        
            tipos_campos=Tipo_Campos.get_campos_by_tipo_item(id_tipo_item)

            for tipo in tipos_campos:
                camp =Campos(id_item=id_item2,
                             nombre_campo=tipo.nombre_campo,
                             tipo_campo= tipo.valor_campo)
                DBSession.add(camp)
            DBSession.flush()


#----------------------------------------

            if adjunto is not None:
                for adj in adjunto:
                    if len(str(adj))==0:
                        break
                    if len(adj.filename)==0:
                        break

                    data = adj.file.read()
                    encode=base64.b64encode(data)
                    var=binascii.a2b_base64(encode)
                    adj = Adjunto (id_item=mayor, archivo=var,
                                nombre_archivo=adj.filename, version =item.version ,
                                    estado_oculto=item.estado_oculto)

                    DBSession.add(adj)
                    DBSession.flush() 

            flash("Item Agregado!")  
            redirect('/item/item')

        else:

            nom_fase=Variables.get_valor_by_nombre("nombre_fase_actual")
            nom_proyecto=Variables.get_valor_by_nombre("nombre_proyecto_actual")

            id_fase=int(Variables.get_valor_by_nombre("fase_actual"))
            padres=Item.get_item_activados()                                        #cambiar esta funcion y solo traer lo que no forman ciclos
            fase = Fase.get_fase_by_id(id_fase)	
            tipos_items=fase.tipos_items

            values = dict(nombre_item=nombre_item,
						id_tipo_item=id_tipo_item, 
						complejidad=complejidad,
						)

            flash("Nombre de Item ya existente!")
            return dict(pagina="agregar_item",values=values,
                        tipos_items=tipos_items,nom_proyecto=nom_proyecto,
                        nom_fase=nom_fase,padres=padres)