def aprobar(self, **kw):  
     print '***************************************************************************************************************'
     print 'entro aca'
     lineaBase_id = kw['idlineaBase']   
     nroLineaBaseAprobar = DBSession.query(NroLineaBase).\
                           filter(NroLineaBase.id_nro_lb == lineaBase_id).one()
                           
     items = nroLineaBaseAprobar.item
     
     band = 1
     if (items == []):
         band = 0
         flash(_("ERROR!! NO SE PUEDE APROBAR UNA LINEA BASE SIN ITEMS"))
         redirect("/lineaBase/index?id_fase="+str(Globals.current_phase.id_fase))
     else:
         
         estadoA = DBSession.query(Estado).filter(Estado.nom_estado == 'Aprobado').one()
         for itemEstado in nroLineaBaseAprobar.item:       
             itemEstado.estado = estadoA
         
         Globals.current_phase.id_estado = estadoA.id_estado
         nroLineaBaseAprobar.id_estado = estadoA.id_estado
         
         DBSession.add(nroLineaBaseAprobar)
         DBSession.flush()     
         
         flash(_("LA LINEA BASE HA SIDO APROBADA"))
         redirect("/lineaBase/index?id_fase="+str(Globals.current_phase.id_fase))
Exemplo n.º 2
0
 def setup(self):
     try:
         new_attrs = {}
         new_attrs.update(self.attrs)
         new_attrs.update(self.do_get_dependencies())
         self.obj = self.klass(**new_attrs)
         DBSession.add(self.obj)
         DBSession.flush()
         return self.obj
     except:
         DBSession.rollback()
         raise
    def abrirLineaBase(self, **kw):

        print 'abrir linea base'


        lineaBase = kw['idlineaBase']   

        estadoD = DBSession.query(Estado).filter(Estado.nom_estado == 'En Desarrollo').one()
        Globals.current_phase.id_estado = estadoD.id_estado

        estadoA = DBSession.query(Estado).filter(Estado.nom_estado == 'Abierta').one()
        usuario = DBSession.query(Usuario).filter(Usuario.login_name == request.identity['repoze.who.userid']).one()
        nroLineaBase = DBSession.query(NroLineaBase).filter(NroLineaBase.id_nro_lb == lineaBase).one()
        
        
            
        aNroLineaBase = NroLineaBase()
        aNroLineaBase.id_linea_base = nroLineaBase.id_linea_base
        aNroLineaBase.nro_linea_base = nroLineaBase.nro_linea_base + 1 
        aNroLineaBase.id_estado = estadoA.id_estado   
        aNroLineaBase.id_usuario_aprobo = usuario.id_usuario  
        
        items = nroLineaBase.item  

        estadoC = DBSession.query(Estado).filter(Estado.nom_estado == 'Confirmado').one()
        for itemGuardar in items:       
            itemGuardar.estado = estadoC
            aNroLineaBase.item.append(itemGuardar)

        
        print 'ABRIR/NUEVA VERSION ID ' 
        print  aNroLineaBase.id_linea_base
        print 'ABRIR/NUEVA nro_linea_base '
        print aNroLineaBase.nro_linea_base
        print 'ABRIR/NUEVA id_estado '
        print aNroLineaBase.id_estado

        DBSession.add(aNroLineaBase)
        DBSession.flush() 
        
        flash(_("LA LINEA BASE HA SIDO ABIERTA"))
        redirect("/lineaBase/index?id_fase="+str(Globals.current_phase.id_fase))
Exemplo n.º 4
0
 def saveUser(self, **kw):
     """Create a movie object and save it to the database."""
     user = Usuario()
     user.nom_usuario = kw['userName']
     user.login_name = kw['loginName']
     user._set_password(kw['password'])
     type = int(kw['userType'])        
     DBSession.add(user)
             
     if type == 1:            
         grupo = DBSession.query(Group).filter(Group.group_name=='admin').one()
         grupo.users.append(user)                                    
     else:
         grupo = DBSession.query(Group).filter(Group.group_name=='user').one()
         grupo.users.append(user)                                    
             
     DBSession.flush()    
         
     
     #flash("El Usuario ha sido registrado satisfactoriamente.")
     redirect("adminUsers")                  
    def guardarLineaBase(self, **kw):
        """
        Funcion que se encarga de guardar los datos introducidos en el formulario
        para la nueva linea base.
        """
        aLineaBase = LineaBase()
         
        fase = DBSession.query(Fase).filter(Fase.id_fase == self.fase_id).one()   
        usuario = DBSession.query(Usuario).filter(Usuario.login_name == request.identity['repoze.who.userid']).one()
        estado =DBSession.query(Estado).filter(Estado.nom_estado == 'Aprobado').one()


        aLineaBase.id_fase = fase.id_fase
        aLineaBase.nom_linea_base = kw['nombreLineaBase']
        aLineaBase.descripcion = kw['descripcionLineaBase']
        aItemsSelecionados = kw['listaItem']
    
        DBSession.add(aLineaBase) 
        DBSession.flush()    
        print aLineaBase.id_linea_base
        
        aNroLineaBase = NroLineaBase()
        aNroLineaBase.id_linea_base = aLineaBase.id_linea_base
        aNroLineaBase.nro_linea_base = 1
        aNroLineaBase.id_estado = estado.id_estado   
        aNroLineaBase.id_usuario_aprobo = usuario.id_usuario  
        
        for items1 in aItemsSelecionados:
              
            itemSelect = DBSession.query(VersionItem).filter(VersionItem.id_version_item ==items1).one()
            print itemSelect.observaciones
            itemSelect.id_estado = estado.id_estado
            aNroLineaBase.item.append(itemSelect)
              
        
        DBSession.add(aNroLineaBase)
        DBSession.flush() 
        flash(_("Se ha creado una nueva Linea Base: %s") %kw['nombreLineaBase'],'info')
        redirect("index?id_fase="+str(self.fase_id))
    def pendiente(self, **kw): 
                
        self.nro_lb_id = kw['idlineaBase']

            
        '''traer todas las versiones de items que pertenecen a la linea base abierta'''
        lineaBase = DBSession.query(NroLineaBase).filter(NroLineaBase.id_nro_lb == self.nro_lb_id).one()        
        itemlineabase = lineaBase.item
        
        estadoItem = DBSession.query(Estado).filter(Estado.nom_estado == 'Confirmado').one()
        estadoR = DBSession.query(Estado).filter(Estado.nom_estado == 'En Revision').one()
        estadoA = DBSession.query(Estado).filter(Estado.nom_estado == 'Aprobado').one()
        
        itemsAnteriores = []
        items=[]
        for item in itemlineabase:
            queryItem = DBSession.query(Item).filter(Item.id_item == item.id_item).one()
            items.append(queryItem)

        print 'pasa esto 1'
        
        versionItem=[]
        for item in items:
            max=-1
            for item2 in item.VersionItem:
                if (item2.nro_version_item > max):
                    max = item2.nro_version_item
                    last_version = item2
            versionItem.append(last_version)
        
        print 'pasa esto 2'
        
        cambios=[]
        sinCambios=[]
        for item in itemlineabase:
            for item3 in versionItem:
                if((item.id_item == item3.id_item) and (item3.nro_version_item > item.nro_version_item)):
                    cambios.append(item3)
                    break
                if((item.id_item == item3.id_item) and(item3.nro_version_item == item.nro_version_item)):
                    sinCambios.append(item3)
                    break
                    
                    
                    
        listaGuardar = []            
        for itemActualizado in cambios:
            itemSelect = DBSession.query(VersionItem).\
                         filter(VersionItem.id_version_item == itemActualizado.id_version_item).one()
            #itemSelect.estado = estadoA
            listaGuardar.append(itemSelect)
            
        for itemNoActualizado in sinCambios:
            itemSelect1 = DBSession.query(VersionItem).\
                         filter(VersionItem.id_version_item == itemNoActualizado.id_version_item).one()
            #itemSelect1.estado = estadoA
            listaGuardar.append(itemSelect1)
        
        #Esta variable del tipo lista tendra todos los items relacionados a 'item'
        ListaItems = []  
        ListaIzq = []
        for itemP in listaGuardar:
            if (itemP.estado != estadoItem):
                flash(_("ATENCION!! EXISTEN ITEMS DE LA FASE QUE AUN NO HAN SIDO CONFIRMADOS"),"warning")
                redirect("/lineaBase/index?id_fase="+str(Globals.current_phase.id_fase))
            
            #El item modificado que se quiere volver a la LB
            item = DBSession.query(VersionItem).\
                filter(VersionItem.id_version_item==itemP.id_version_item).one()
            
            #Obtener la red de relaciones desde este item
            item.initGraph(item)
            #Obtenemos relaciones de la Izquierda
            ListaItems.extend(item.getRelacionesIzq(item.id_version_item))
            ListaIzq.extend(item.getRelacionesIzq(item.id_version_item))
            
            #Obtenemos relaciones de Abajo
            hijos=item.getHijos(item.id_version_item)        
            ListaItems.extend(item.getHijosNietos(hijos))
            
            #Obtenemos relaciones de la Derecha
            ListaItems.extend(item.getRelacionesDer(item.id_version_item))
            
            bandR = 0
            for test in ListaItems:
                itemRelacion = DBSession.query(VersionItem).\
                        filter(VersionItem.id_version_item == test.id_version_item).one()
                if (itemRelacion.estado == estadoR):
                    bandR = 1
        
                if (bandR == 1):
                    break
        
            if (bandR == 1):
                    break
        
        band = 1
        if (ListaItems == []):
            band = 0
            flash(_("ATENCION!! NO EXISTEN ITEMS"),"warning")
            redirect("/lineaBase/index?id_fase="+str(Globals.current_phase.id_fase))
        elif(bandR == 1):                
            flash(_("ATENCION!! EXISTEN ITEMS DE OTRAS FASES EN REVISION"),"warning")
            redirect("/lineaBase/index?id_fase="+str(Globals.current_phase.id_fase))
        else:
            
            estadoP = DBSession.query(Estado).filter(Estado.nom_estado == 'Pendiente').one()
            lineaBase = DBSession.query(NroLineaBase).filter(NroLineaBase.id_nro_lb == self.nro_lb_id).one()       
            estadoE = DBSession.query(Estado).filter(Estado.nom_estado == 'Eliminado').one()
    
            faseList = DBSession.query(Fase).\
                filter(Fase.id_proyecto==Globals.current_project.id_proyecto).\
                order_by(Fase.nro_fase).all()
            
            print '**************************************************hola************************************************************'
            print faseList[0].nro_fase
            print ListaIzq
            if(Globals.current_phase.nro_fase != faseList[0].nro_fase):     
                bandA = 0
                for itemP in listaGuardar:
                    antecesores = itemP.Antecesores
                    for antecesor in antecesores:
                        itemAntecesor = DBSession.query(VersionItem).\
                            filter(VersionItem.id_version_item==antecesor.id_version_item).one()
                        
                        if(itemAntecesor.estado != estadoA and itemAntecesor.ultima_version == 'S' and itemAntecesor.estado.nom_estado != "Eliminado"):
                            flash(_("ATENCION!! DEBE APROBAR PRIMERO LA LINEA BASE DE LA FASE ANTERIOR"),'warning')
                            redirect("/lineaBase/index?id_fase="+str(Globals.current_phase.id_fase))              
            lista=[]
            Globals.current_phase.id_estado = estadoP.id_estado
            lineaBase.id_estado = estadoP.id_estado

            for i in lineaBase.item:
                lista.append(i)

            for element in lista:
                lineaBase.item.remove(element)
                DBSession.flush() 
            
            for item in listaGuardar:
                itemSelect3 = DBSession.query(VersionItem).\
                         filter(VersionItem.id_version_item == item.id_version_item).one()
                if(itemSelect3.estado == estadoItem):
                    itemSelect3.estado = estadoA 
                    lineaBase.item.append(itemSelect3)
            
            DBSession.add(lineaBase)
            DBSession.flush()     
        
            flash(_("LA LINEA BASE HA PASADO A UN ESTADO PENDIENTE DE APROBACION"))
            redirect("/lineaBase/index?id_fase="+str(Globals.current_phase.id_fase))