Пример #1
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'])
Пример #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))