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))
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))