Exemplo n.º 1
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()
     item_nuevo.codigo = item_revertir.codigo
     item_nuevo.identificador = item_revertir.identificador
     item_nuevo.observacion = item_revertir.observacion
     item_nuevo.estado = "inicial"
     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
     version = 0
     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'
     print "version",version
     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)
     
     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)
     
     
     raise redirect('/item/items?id_fase='+ str(id_fase))
     
     
Exemplo n.º 2
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))