Example #1
0
 def new(self, *args, **kw):
     """Display a page to show a new record."""
     rm = RelacionManager()
     id_fase = kw['id_fase']
     items1 = rm.getItemByFase(id_fase)
     item2 = rm.getItems(id_fase)
         
     return dict(value=kw, model=self.model.__name__, items1=items1, items2= items2)
Example #2
0
    def new(self, *args, **kw):
        """Display a page to show a new record."""
        rm = RelacionManager()
        id_fase = kw['id_fase']
        items1 = rm.getItemByFase(id_fase)
        item2 = rm.getItems(id_fase)

        return dict(value=kw,
                    model=self.model.__name__,
                    items1=items1,
                    items2=items2)
Example #3
0
 def __actions__(self, obj):
     """Override this function to define how action links should be displayed for the given record."""
     primary_fields = self.__provider__.get_primary_fields(self.__entity__)
     pklist = '/'.join(map(lambda x: str(getattr(obj, x)), primary_fields))
     rm = RelacionManager()
     if_action = rm.verificar_action(obj)
     
     if if_action:
         value = '<div><div>'\
               '<form method="POST" action="/relacion/'+pklist+'/post_delete" class="button-to">'\
             '<input type="hidden" name="_method" value="DELETE" />'\
             '<input class="delete-button" onclick="return confirm(\'Are you sure?\');" value="delete" type="submit" '\
             'style="background-color: transparent; float:left; border:0; color: #286571; display: inline; margin: 0; padding: 0;"/>'\
         '</form>'\
         '</div></div>'
     else:
         value = '<div><div>'\
         '</div></div>'
     return value
Example #4
0
 def post_delete(self, *args, **kw):
     '''Metodo que elimina un item'''
     try:
         item, navegacion = self.getNavegacionFromIdItem(args[0])
     except:
         flash(('Direccion no valida.'), 'error')
         raise redirect("/index")
     if not(Secure().FiltrarByFase(item.id_fase, 'modificacion_item')):
         flash(('USTED NO CUENTA CON PERMISOS SUFICIENTES.'), 'error')
         raise redirect("/index")
     pm = ItemManager()
     if item.estado != 'finalizado':
         item.estado = 'eliminado'
         item.actual = 'false'
         item.id_linea_base = None
         
     id_fase = item.id_fase
     pm.update(item)
     transaction.begin()
     rm = RelacionManager()
     lbm = LineaBaseManager()
     relaciones = rm.getByItem(args)
     '''Marcar para Revision'''
     for relacion in relaciones:
         transaction.begin()
         if relacion.id_item1 == args:
             item_revision = pm.getById(relacion.id_item2)
         else:
             item_revision = pm.getById(relacion.id_item1)
         
         item_revision.estado = 'revision'
         if item_revision.id_linea_base != None:
             linea_base = lbm.getById(item_revision.id_linea_base)
             linea_base.estado = 'no valido'
             lbm.update(linea_base)
         transaction.commit() 
            
     '''Eliminar Relaciones'''
     for relacion in relaciones:
         rm.delete(relacion)
     transaction.commit()
     raise redirect('/item/items',id_fase=id_fase, navegacion=navegacion)
Example #5
0
 def construir(self, nodos,id_item,target,direccion):
     for elemento in nodos:
         if elemento.item == id_item:
             return
     im = ItemManager()
     rm = RelacionManager()
     relations = rm.getByItem(id_item)
     relaciones = []
     for relacion in relations:
         item1 = im.getById(relacion.id_item1)
         item2 = im.getById(relacion.id_item2)
         if target != id_item:
             if item1.actual == "true" and item2.actual == "true":
                 relaciones.append(relacion)
         else:
             if direccion == "adelante" or direccion == "total":
                 if item1.actual == "true" and item2.actual == "true" and relacion.id_item1 == target:
                     relaciones.append(relacion)
             if direccion == "atras" or direccion == "total":
                 if item1.actual == "true" and item2.actual == "true" and relacion.id_item2 == target:
                     relaciones.append(relacion)
     nodo = Nodo(id_item)
     item = im.getById(id_item)
     nodo.complejidad = item.complejidad
     nodo.nombre = item.identificador
     nodo.fase = item.id_fase
     analizar = []
     for relacion in relaciones:
         if relacion.id_item1 == nodo.item:
             nodo.relaciones.append(relacion.id_item2)
             analizar.append(relacion.id_item2)
         else:
             analizar.append(relacion.id_item1)
     nodos.append(nodo)
     for elemento in analizar:
         self.construir(nodos,elemento, target, direccion)
Example #6
0
 def crear(self, *args, **kw):
     '''crear relaciones'''
     im = ItemManager()
     rm = RelacionManager()
     no_creados=[]
     seleccion = kw['Aceptar']
     
     if seleccion != 'Cancelar': 
         '''validar relaciones'''
         id_item_actual = kw['item']
         item_actual = im.getById(id_item_actual)
         
         id_lista_items = []
         id_lista_items = kw['lista_items']
        
         try:
             id_lista_items.count(1)
         except:
             int = id_lista_items
             id_lista_items = []
             id_lista_items.append(int)
         
         
         #por cada item a relacionar
         for id_item in id_lista_items: 
             item = im.getById(id_item) #obtener el item
             if rm.relacionDuplicada(item_actual,item): #comprobar si es una relacion duplicada
                 no_creados.append(item.identificador)
             else:
                 if item.id_fase == item_actual.id_fase : #son items de la misma fase
                     if not rm.tieneciclos(item_actual, item):#no tiene ciclos
                         rm.add(item_actual,item,'padre-hijo') 
                     else:
                         no_creados.append(item.identificador)
                 else:
                     '''son de fases distintas'''
                     rm.add(item,item_actual, 'antecesor-sucesor')
         if no_creados:
             print no_creados
             largo=True
             if len(no_creados)==1:
                 largo=False
             raise redirect('/relacion/resumen_errores',no_creados=no_creados,id_fase= item_actual.id_fase, largo=largo)
         else:
             raise redirect('/relacion?id_fase='+kw['id_fase'])
     else:
         raise redirect('/relacion?id_fase='+kw['id_fase'])
Example #7
0
 def nuevo(self, *args, **kw):
     """Display a page to show a new record."""
     rm = RelacionManager()
     items = rm.getItemsAprobados(kw['fase'])
     
     return dict(items = items, id_fase = kw['fase'])
Example #8
0
    def crear_nueva_version (self,id_item_viejo):
        '''funcion para copiar campos de un item'''
        pm = ItemManager()
        item_viejo = pm.getById(id_item_viejo)
        item_nuevo = Item()
        
        '''Copiar campos genericos'''
#        transaction.begin()
        
        identificador = item_viejo.identificador
        item_nuevo.identificador = item_viejo.identificador
        item_nuevo.observacion = item_viejo.observacion
        item_nuevo.complejidad = item_viejo.complejidad
        item_nuevo.descripcion = item_viejo.descripcion
        item_nuevo.id_linea_base = item_viejo.id_linea_base
        item_viejo.id_linea_base = None
        item_nuevo.id_fase = item_viejo.id_fase
        
        id_fase = item_viejo.id_fase
        item_nuevo.codigo = item_viejo.codigo
        item_nuevo.version = item_viejo.version + 1
        item_nuevo.actual = 'true'
        item_viejo.actual = 'false'
        item_nuevo.tipo = item_viejo.tipo
        tipo_item = item_viejo.id_tipo_item
        
        '''cambiar estado'''
        if item_viejo.estado=='inicial':
            item_nuevo.estado = 'inicial'
        else:
            item_nuevo.estado = 'revision'
            
        version = item_nuevo.version
        pm.add(item_nuevo)
        pm.update(item_viejo) 
#        transaction.commit()
        
        '''Copiar los campos especificos'''
        transaction.begin()
        item_viejo = pm.getById(id_item_viejo)
        if tipo_item :
            for atributo in item_viejo.atributos:
                id_campo = atributo.id_campo
                valor = atributo.valor
                pm.addAtributo(identificador,id_fase,version,id_campo,valor)  
        transaction.commit()
               
        item = pm.getByIdentificadorFaseVersion(identificador,id_fase,version) #Item_nuevo
        item_viejo = pm.getById(id_item_viejo)
        
        '''Copiar los adjuntos'''
        if item_viejo.adjuntos :
            for adjunto in item_viejo.adjuntos:
                pm.copiarAdjunto(item,adjunto)
                
        pm.update(item)
        pm.update(item_viejo)    
        
        item = pm.getByIdentificadorFaseVersion(identificador,id_fase,version) #Item_nuevo
        
        '''Copiar Relaciones'''
        transaction.begin()
        item_viejo = pm.getById(id_item_viejo)
        item = pm.getByIdentificadorFaseVersion(identificador,id_fase,version) #Item_nuevo
        id_item_nuevo = item.id_item #Id del item nuevo
        rm = RelacionManager()
        relaciones = rm.getByItem(item_viejo.id_item)
        for relacion in relaciones:
            transaction.begin()
            if relacion.id_item1 == item_viejo.id_item:
                item1 = item
                item2 = pm.getById(relacion.id_item2)
            else:
                item1 = pm.getById(relacion.id_item1)
                item2 = item
                
            if item1.actual == 'true' and item2.actual == 'true': #comprobar que sean relaciones validas
                if item1.id_fase == item2.id_fase : #son items de la misma fase
                        rm.add(item1,item2,'padre-hijo') 
                else:
                    rm.add(item1,item2,'antecesor-sucesor')
            transaction.commit()   
            
        '''Marcar para revision Items Relacionados'''
        lbm = LineaBaseManager()
        relaciones = rm.getByItem(id_item_nuevo)
        for relacion in relaciones:
            transaction.begin()
            if relacion.id_item1 == id_item_nuevo:
                item_revision = pm.getById(relacion.id_item2)
            else:
                item_revision = pm.getById(relacion.id_item1)
            item_revision.estado = 'revision'
            if item_revision.id_linea_base != None:
                linea_base = lbm.getById(item_revision.id_linea_base)
                linea_base.estado = 'no valido'
                lbm.update(linea_base)
            transaction.commit() 
            
        transaction.commit()  
        
        return id_item_nuevo
Example #9
0
    def put(self, *args, **kw):
        '''Metodo que actualiza los campos en una edicion de item'''     
        params = kw
        pm=ItemManager()
        try:
            item_viejo, navegacion = self.getNavegacionFromIdItem(int(kw['id_item']))
        except:
            flash(('Direccion no valida.'), 'error')
            raise redirect("/index")
        if not(Secure().FiltrarByFase(item_viejo.id_fase, 'modificacion_item')):
            flash(('USTED NO CUENTA CON PERMISOS SUFICIENTES.'), 'error')
            raise redirect("/index")
        
        complejidad = [1,2,3,4,5,6,7,8,9,10]    
        if params['submit']=="cancelar":
            raise redirect ('/item/items', id_fase=item_viejo.id_fase)    
        if item_viejo.id_tipo_item:
            ti = TipoItemManager()

            tipo= ti.getById(item_viejo.id_tipo_item)
            campos = tipo.campos
            error, lista = self.verificarCampos(campos, **kw)
            if error:
                nuevo = self.getNuevo(item_viejo,**kw)
                return dict(id_item=item_viejo.id_item, item=nuevo, campos = lista, id_fase= item_viejo.id_fase, comp=complejidad, navegacion=navegacion)
        item_nuevo = Item()
        
        '''Copiar Campos Genericos'''
        identificador = params['identificador']
        item_nuevo.identificador = identificador
        item_nuevo.observacion = params['observacion']
        item_nuevo.complejidad = params['complejidad']
        item_nuevo.descripcion = params['descripcion']
        item_nuevo.id_linea_base = item_viejo.id_linea_base
        item_viejo.id_linea_base = None
        item_nuevo.id_fase = item_viejo.id_fase
        
        id_fase = item_viejo.id_fase
        item_nuevo.codigo = item_viejo.codigo
        item_nuevo.version = item_viejo.version + 1
        item_nuevo.actual = 'true'
        item_viejo.actual = 'false'
        item_nuevo.tipo = item_viejo.tipo
        tipo_item = item_viejo.id_tipo_item
        
        '''cambiar estado'''
        if item_viejo.estado=='inicial':
            item_nuevo.estado = 'inicial'
        else:
            item_nuevo.estado = 'revision'
            
        version = item_nuevo.version
        pm.add(item_nuevo)
        pm.update(item_viejo)
        
        '''Copiar los campos especificos'''
        if tipo_item :
            ti = TipoItemManager()
            tipo= ti.getById(tipo_item)
            campos = tipo.campos
            for campo in campos:
                nombre_campo = campo.nombre
                valor = params[nombre_campo]   
                pm.addAtributo(identificador,id_fase,version,campo.id_campo,valor)  
                
        item = pm.getByIdentificadorFaseVersion(identificador,id_fase,version) #Item_nuevo
        
        item_viejo = pm.getById(int(kw['id_item']))
        '''Copiar los adjuntos'''
        if item_viejo.adjuntos :
            for adjunto in item_viejo.adjuntos:
                pm.copiarAdjunto(item,adjunto)
                
        pm.update(item)
        pm.update(item_viejo)    
        
        item = pm.getByIdentificadorFaseVersion(identificador,id_fase,version) #Item_nuevo
        
        '''Copiar Relaciones'''
        transaction.begin()
        item_viejo = pm.getById(int(kw['id_item']))
        item = pm.getByIdentificadorFaseVersion(identificador,id_fase,version) #Item_nuevo
        id_item_nuevo = item.id_item #Id del item nuevo
        rm = RelacionManager()
        relaciones = rm.getByItem(item_viejo.id_item)
        for relacion in relaciones:
            transaction.begin()
            if relacion.id_item1 == item_viejo.id_item:
                item1 = item
                item2 = pm.getById(relacion.id_item2)
            else:
                item1 = pm.getById(relacion.id_item1)
                item2 = item
                
            if item1.actual == 'true' and item2.actual == 'true': #comprobar que sean relaciones validas
                if item1.id_fase == item2.id_fase : #son items de la misma fase
                        rm.add(item1,item2,'padre-hijo') 
                else:
                    rm.add(item1,item2,'antecesor-sucesor')
            transaction.commit()   
            
        '''Marcar para revision Items Relacionados'''
        lbm = LineaBaseManager()
        relaciones = rm.getByItem(id_item_nuevo)
        for relacion in relaciones:
            transaction.begin()
            if relacion.id_item1 == id_item_nuevo:
                item_revision = pm.getById(relacion.id_item2)
            else:
                item_revision = pm.getById(relacion.id_item1)
            item_revision.estado = 'revision'
            if item_revision.id_linea_base != None:
                linea_base = lbm.getById(item_revision.id_linea_base)
                linea_base.estado = 'no valido'
                lbm.update(linea_base)
            transaction.commit() 
            
        transaction.commit()  
        raise redirect('/item/items', id_fase=id_fase)
Example #10
0
    def revertir(self, *args, **kw):
        id_item = kw["id_item"]
        id_item = int(id_item)
        im = ItemManager()
        transaction.begin()
        item_revertir = im.getById(id_item)
        item_nuevo = Item()

        """Copiar los campos"""
        item_nuevo.codigo = item_revertir.codigo
        item_nuevo.identificador = item_revertir.identificador
        item_nuevo.observacion = item_revertir.observacion
        item_nuevo.estado = "revision"
        item_nuevo.complejidad = item_revertir.complejidad
        item_nuevo.id_fase = item_revertir.id_fase
        item_nuevo.id_tipo_item = item_revertir.id_tipo_item
        item_nuevo.descripcion = item_revertir.descripcion
        items_de_fase = im.buscar_por_fase(item_revertir.id_fase)
        id_fase = item_revertir.id_fase
        item_nuevo.id_linea_base = item_revertir.id_linea_base
        #        item_revertir.id_linea_base = None
        version = 0
        #        '''Estado del item revertido'''
        #        if item_revertir.estado == 'aprobado':
        #            item_nuevo.estado = 'listo'
        #        else:
        #            item_nuevo.estado = item_revertir.estado

        for item in items_de_fase:
            if item.version > version:
                version = item.version
            if item.codigo == item_revertir.codigo and item.actual == "true":
                item.actual = "false"
        version = version + 1
        item_nuevo.version = version
        item_nuevo.actual = "true"

        im.add(item_nuevo)
        transaction.commit()

        item_viejo = im.getById(id_item)
        identificador = item_viejo.identificador

        tipo_item = item_viejo.id_tipo_item
        if tipo_item:
            for atributo in item_viejo.atributos:
                id_campo = atributo.id_campo
                valor = atributo.valor
                im.addAtributo(identificador, id_fase, version, id_campo, valor)
        im.update(item_viejo)
        transaction.begin()
        item_viejo = im.getById(id_item)
        item = im.getByIdentificadorFaseVersion(identificador, id_fase, version)  # Item_nuevo
        """Copiar los adjuntos"""
        if item_viejo.adjuntos:
            for adjunto in item_viejo.adjuntos:
                im.copiarAdjunto(item, adjunto)
        im.update(item)

        """Recuperar Relaciones"""
        rm = RelacionManager()
        item = im.getByIdentificadorFaseVersion(identificador, id_fase, version)  # Item_nuevo
        relaciones = rm.getByItem(item_viejo.id_item)
        id_item_nuevo = item.id_item
        for relacion in relaciones:
            transaction.begin()
            if relacion.id_item1 == item_viejo.id_item:
                item1 = item
                item2 = im.getById(relacion.id_item2)
            else:
                item1 = im.getById(relacion.id_item1)
                item2 = item

            if item1.actual == "true" and item2.actual == "true":
                if item1.id_fase == item2.id_fase:  # son items de la misma fase
                    if not rm.tieneciclos(item1, item2):  # no tiene ciclos
                        rm.add(item1, item2, "padre-hijo")
                else:
                    rm.add(item1, item2, "antecesor-sucesor")
            transaction.commit()

        """Marcar Para revision Item Relacionados"""
        lbm = LineaBaseManager()
        relaciones = rm.getByItem(id_item_nuevo)
        for relacion in relaciones:
            transaction.begin()
            if relacion.id_item1 == id_item_nuevo:
                item_revision = im.getById(relacion.id_item2)
            else:
                item_revision = im.getById(relacion.id_item1)

            item_revision.estado = "revision"
            if item_revision.id_linea_base != None:
                linea_base = lbm.getById(item_revision.id_linea_base)
                linea_base.estado = "no valido"
                lbm.update(linea_base)
            transaction.commit()

        transaction.commit()
        raise redirect("/item/items?id_fase=" + str(id_fase))
Example #11
0
 def _do_get_provider_count_and_objs(self, buscado="", **kw):
     rm = RelacionManager()
     Items = rm.buscar(self.buscado, self.fase)
     return len(Items), Items   
Example #12
0
 def _do_get_provider_count_and_objs(self, buscado="", **kw):
     rm = RelacionManager()
     
     Campoes = rm.buscar_por_fase(self.id_fase)
     return len(Campoes), Campoes  
Example #13
0
    def post_delete(self, *args, **kw):
#        '''delete'''
        rm = RelacionManager()
        rm.deleteById(args[0],args[1],args[2])
        raise redirect('/relacion?id_fase='+str(session["id_fase"]))