def save(self, userfile):
     forbidden_files = [".js", ".htm", ".html", ".mp3"]
     for forbidden_file in forbidden_files:
         if not hasattr(userfile,'filename'):
             redirect('file_upload?validate=error')
         elif userfile.filename.find(forbidden_file) != -1:
             return redirect("/")
     
     versionItem = DBSession.query(VersionItem).\
         filter(VersionItem.id_version_item == Globals.\
                current_item.id_version_item).one()
            
     filecontent = userfile.file.read()
     new_file = AtributoArchivo(filename=userfile.filename, filecontent=filecontent)        
     DBSession.add(new_file)
     
     atributo = DBSession.query(AtributoItem).\
         filter(AtributoItem.id_version_item==versionItem.id_version_item).\
         filter(AtributoItem.id_atributo == Globals.current_atributo.id_atributo).one()
                         
     atributo.atributoArchivo = new_file
            
    
     redirect("/item/atributosItem?id_version="+\
     str(versionItem.id_version_item) + ";frompage=item")
 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))
Пример #3
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
Пример #4
0
 def savePhase(self, **kw):
     Phase = Fase()
     project = DBSession.query(Proyecto).\
         filter(Proyecto.id_proyecto == Globals.current_project.id_proyecto).one()
     estado =DBSession.query(Estado).\
         filter(Estado.nom_estado == 'Inicial').one()
     Phase.proyectoFase = project
     Phase.estadoFase = estado
     Phase.nro_fase = kw['nroPhase']
     Phase.nom_fase = kw['phaseName']
     Phase.des_fase = kw['descripcion']                
     DBSession.add(Phase)                
     flash(_("Se ha creado una nueva Fase: %s") %kw['phaseName'],'info')
     redirect("index?id_proyecto="+str(Globals.current_project.id_proyecto))
Пример #5
0
 def saveProject(self, **kw):
     """
     Funcion que se encarga de guardar los datos introducidos en el formulario
     para el nuevo proyecto.
     Al crear un nuevo proyecto se establece el estado de este
     en 'No Iniciado'
     """
     aProject = Proyecto()
     estado =DBSession.query(Estado).filter(Estado.nom_estado == 'No Iniciado').one()
     aProject.estadoProyecto = estado
     aProject.nom_proyecto = kw['projectName']
     aProject.des_proyecto = kw['descripcion']
     DBSession.add(aProject)                
     flash(_("Se ha creado un nuevo Proyecto: %s") %kw['projectName'],'info')
     redirect("adminProject")
    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))
Пример #7
0
    def saveImport(self,**kw):
        fase = DBSession.query(Fase).\
            filter(Fase.id_fase==Globals.current_phase.id_fase).one()
		
        tipo=DBSession.query(TipoItem).filter(TipoItem.id_tipo_item==int(kw['id_tipo'])).one()
        		
        tipoNew = TipoItem()		
        tipoNew.nom_tipo_item = tipo.nom_tipo_item
        tipoNew.fase = fase
        tipoNew.prefijo = tipo.prefijo
        tipoNew.cont_prefijo = 0
               
        list_atributos = []       
        for atributo in tipo.Atributo:
            list_atributos.append(Atributo(atributo.nom_atributo, 
                                           atributo.tipoDatoAtributo, 
                                           tipoNew))
        
        DBSession.add(tipoNew)
        DBSession.add_all(list_atributos)           
        redirect('/fase/importTipoItem')	
Пример #8
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 saveItem(self, **kw):
        unItem = Item()
        unItem.nom_item = kw["nomItem"]
        # aProject.des_proyecto = kw['descripcion']
        DBSession.add(unItem)

        unaVersionItem = VersionItem()
        unaVersionItem.item = unItem

        unEstado = DBSession.query(Estado).filter_by(id_estado=1).one()
        unTipoItem = DBSession.query(TipoItem).filter_by(id_tipo_item=1).one()
        unUsuario = DBSession.query(Usuario).filter_by(id_usuario=1).one()

        unaVersionItem.estado = unEstado
        unaVersionItem.tipoItem = unTipoItem
        unaVersionItem.usuarioModifico = unUsuario
        unaVersionItem.fecha = "10/06/2011"
        unaVersionItem.observaciones = kw["observaciones"]
        # unaVersionItem.peso = kw['peso']

        DBSession.add(unaVersionItem)

        for atributo in DBSession.query(Atributo).filter_by(tipoItem=unTipoItem):
            nuevoAtributoItem = AtributoItem()
            nuevoAtributoItem.atributo = atributo
            nuevoAtributoItem.versionItem = unaVersionItem
            nuevoAtributoItem.val_atributo = atributo.val_default
            DBSession.add(nuevoAtributoItem)

        flash(_("Se ha creado un nuevo Item: %s") % kw["itemName"], "info")
        redirect("adminItem")
Пример #10
0
    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))
Пример #11
0
    def saveAtributo(self, **kw):
        tipoItem = DBSession.query(TipoItem).\
            filter(TipoItem.id_tipo_item==(kw['id_tipo'])).one()
        tipoDato = DBSession.query(TipoDatoAtributo).\
            filter(TipoDatoAtributo.id_tipo_dato==int(kw['tipo_dato'])).one()
		
        if int(kw['save_as']) == 0:
            '''Opcion para Nuevos Items'''
            newAtri = Atributo(kw['nom_atributo'], tipoDato, tipoItem)
        
            if tipoDato.nom_tipo_dato == 'numerico':
                newAtri.val_default = kw['def_numerico']
        
            elif tipoDato.nom_tipo_dato == 'texto':
                newAtri.val_default = kw['def_texto']
            
            elif tipoDato.nom_tipo_dato == 'fecha':
                if not kw['def_fecha'] == None:
                    newAtri.val_default = kw['def_fecha'].strftime('%d/%m/%y')
                else:
                    newAtri.val_default = kw['def_fecha']
        
        else:
            '''Opcion para Nuevos y Actuales Items'''
            newAtri = Atributo(kw['nom_atributo'], tipoDato, tipoItem)
        
            if tipoDato.nom_tipo_dato == 'numerico':
                newAtri.val_default = kw['def_numerico']
        
            elif tipoDato.nom_tipo_dato == 'texto':
                newAtri.val_default = kw['def_texto']
            
            elif tipoDato.nom_tipo_dato == 'fecha':
                if not kw['def_fecha'] == None:
                    newAtri.val_default = kw['def_fecha'].strftime('%d/%m/%y')
                else:
                    newAtri.val_default = kw['def_fecha']
                
            item_list = DBSession.query(VersionItem).\
                filter(VersionItem.ultima_version == 'S').\
                filter(VersionItem.tipoItem==tipoItem).all()
                
            for item in item_list:
                        
                item.ultima_version = 'N'
        
                lg_name=request.identity['repoze.who.userid']
                usuario = DBSession.query(Usuario).\
                    filter(Usuario.login_name==lg_name).one()
            
                nuevaVersionItem = VersionItem()
                nuevaVersionItem.item = item.item        
                nuevaVersionItem.nro_version_item = item.nro_version_item+1
                nuevaVersionItem.estado = item.estado       
                nuevaVersionItem.tipoItem = item.tipoItem         
                nuevaVersionItem.usuarioModifico = usuario
                nuevaVersionItem.fecha = str(datetime.now())
                nuevaVersionItem.observaciones = item.observaciones
                nuevaVersionItem.ultima_version = 'S'
                nuevaVersionItem.peso = item.peso
                nuevaVersionItem.id_fase = item.id_fase
                        
                # Agregar los antecesores del item viejo
                for antecesor in item.Antecesores:
                    nuevaVersionItem.Antecesores.append(antecesor)
        
                # Agregar los sucesores del item viejo
                try:
                    antecesor = DBSession.query(Antecesor).\
                    filter(Antecesor.id_version_item == item.id_version_item).\
                    one()
            
                    nuevoAntecesor = Antecesor(nuevaVersionItem.id_version_item)
           
                    sucesores = antecesor.sucesores
                    for sucesor in sucesores:
                        sucesor.Antecesores.append(nuevoAntecesor)
                except NoResultFound,e:                    
                    existe=False
        
                # Agregar los padres del item viejo       
                for padre in item.Padres:
                    nuevaVersionItem.Padres.append(padre)
            
                # Agregar los hijos del item viejo
                try:
                    padre = DBSession.query(Padre).\
                    filter(Padre.id_version_item == item.id_version_item).\
                    one()
            
                    nuevoPadre = Padre(nuevaVersionItem.id_version_item)
           
                    hijos = padre.hijos
                    for hijo in hijos:                
                        hijo.Padres.append(nuevoPadre)
                except NoResultFound,e:
                    existe=False
            
                # Copiamos los atributos del item viejo
                for atributo in DBSession.query(AtributoItem).\
                    filter(AtributoItem.id_version_item == item.id_version_item).all():
                
                    nuevoAtributoItem = AtributoItem()
                    nuevoAtributoItem.id_atributo = atributo.id_atributo
                    nuevoAtributoItem.id_version_item = nuevaVersionItem.id_version_item        
                    nuevoAtributoItem.val_atributo = atributo.val_atributo
                    DBSession.add(nuevoAtributoItem)
                                
                atriItem = AtributoItem()
                atriItem.atributo = newAtri
                atriItem.id_version_item = nuevaVersionItem.id_version_item
                atriItem.val_atributo = newAtri.val_default
                DBSession.add(atriItem)
    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))