def put(self, *args, **kw): '''update''' params = kw # print params['submit'] pm = ItemManager() item_viejo = pm.getById(int(args[0])) item_nuevo = Item() identificador = params['identificador'] item_nuevo.identificador = identificador item_nuevo.observacion = params['observacion'] item_nuevo.estado = item_viejo.estado item_nuevo.complejidad = params['complejidad'] item_nuevo.descripcion = params['descripcion'] 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 version = item_nuevo.version pm.add(item_nuevo) pm.update(item_viejo) '''Copiar los campos''' 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(args[0])) '''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 '''Adjuntar nuevos Archivos''' if params['submit'] == 'Adjuntar': '''Hay que adjuntar archivos''' id_item = item.id_item raise redirect('/item/adjuntar?id_item=' + str(id_item)) raise redirect('/item/items?id_fase=' + str(id_fase))
def put(self, *args, **kw): '''update''' params = kw # print params['submit'] pm=ItemManager() item_viejo = pm.getById(int(args[0])) item_nuevo = Item() identificador = params['identificador'] item_nuevo.identificador = identificador item_nuevo.observacion = params['observacion'] item_nuevo.estado = item_viejo.estado item_nuevo.complejidad = params['complejidad'] item_nuevo.descripcion = params['descripcion'] 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 version = item_nuevo.version pm.add(item_nuevo) pm.update(item_viejo) '''Copiar los campos''' 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(args[0])) '''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 '''Adjuntar nuevos Archivos''' if params['submit'] == 'Adjuntar': '''Hay que adjuntar archivos''' id_item = item.id_item raise redirect('/item/adjuntar?id_item='+ str(id_item)) raise redirect('/item/items?id_fase='+ str(id_fase))
def post(self,*args, **kw): '''New''' p = Item() pm = ItemManager() params = kw complejidad = [1,2,3,4,5,6,7,8,9,10] if params['tipo_items'] != '-1': ti = TipoItemManager() tipo= ti.getById(params['tipo_items']) campos = tipo.campos error, lista = self.verificarCampos(campos, **kw) if error: return dict(value=kw, model=self.model.__name__,campos = lista,id_fase=params['id_fase'],tipo_items=kw['tipo_items'], comp = complejidad,i =kw['identificador'],o=kw['observacion'], c = int(params['complejidad']), d =kw['descripcion']) if pm.existeIdentificador(params['identificador'],int(params['id_fase'])): flash(('Error: Ya existe un item con el nombre <<' + params['identificador'] + '>> en esta fase.'), 'Error') return dict(value=kw, model=self.model.__name__,campos = lista,id_fase=params['id_fase'],tipo_items=kw['tipo_items'], comp = complejidad,i ="",o=kw['observacion'], c = int(params['complejidad']), d =kw['descripcion']) p.identificador = params['identificador'] p.observacion = params['observacion'] p.estado = 'inicial' p.complejidad = params['complejidad'] p.descripcion = params['descripcion'] p.id_fase = int(session['id_fase']) p.codigo = pm.generar_codigo(int(session['id_fase']), int(params['tipo_items'])) p.version = 1 p.actual = 'true' if params['tipo_items'] != '-1': ti = TipoItemManager() tipo= ti.getById(params['tipo_items']) p.tipo = tipo pm.add(p) if params['tipo_items'] != '-1': ti = TipoItemManager() tipo= ti.getById(params['tipo_items']) campos = tipo.campos for campo in campos: nombre_campo = campo.nombre valor = params[nombre_campo] pm.addAtributo(params['identificador'],params['id_fase'],1,campo.id_campo,valor) item = pm.getByIdentificadorFaseVersion(params['identificador'],params['id_fase'],1) '''Adjuntar nuevos Archivos''' if params['submit'] == 'Adjuntar': '''Hay que adjuntar archivos''' id_item = item.id_item raise redirect('/item/adjuntar?id_item='+ str(id_item)) raise redirect('/item/items?id_fase='+ params['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() 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 getNuevo(self,item_viejo, **kw): item_nuevo = Item() params = kw identificador = params['identificador'] item_nuevo.identificador = identificador item_nuevo.observacion = params['observacion'] item_nuevo.estado = item_viejo.estado item_nuevo.complejidad = params['complejidad'] item_nuevo.descripcion = params['descripcion'] item_nuevo.id_fase = item_viejo.id_fase item_nuevo.id_fase = item_viejo.id_fase item_nuevo.codigo = item_viejo.codigo item_nuevo.version = item_viejo.version item_nuevo.actual = 'true' item_nuevo.tipo = item_viejo.tipo item_nuevo.tipo_item = item_viejo.id_tipo_item return item_nuevo
def post(self, *args, **kw): '''New''' p = Item() pm = ItemManager() cm = CodigoManager() params = kw p.identificador = params['identificador'] p.observacion = params['observacion'] p.estado = 'inicial' p.complejidad = params['complejidad'] p.descripcion = params['descripcion'] p.id_fase = int(session['id_fase']) p.codigo = pm.generar_codigo(int(session['id_fase']), int(params['tipo_items'])) p.version = 1 p.actual = 'true' if params['tipo_items'] != '-1': ti = TipoItemManager() tipo = ti.getById(params['tipo_items']) p.tipo = tipo pm.add(p) if params['tipo_items'] != '-1': ti = TipoItemManager() tipo = ti.getById(params['tipo_items']) campos = tipo.campos for campo in campos: nombre_campo = campo.nombre valor = params[nombre_campo] pm.addAtributo(params['identificador'], params['id_fase'], 1, campo.id_campo, valor) item = pm.getByIdentificadorFaseVersion(params['identificador'], params['id_fase'], 1) '''Adjuntar nuevos Archivos''' if params['submit'] == 'Adjuntar': '''Hay que adjuntar archivos''' id_item = item.id_item raise redirect('/item/adjuntar?id_item=' + str(id_item)) raise redirect('/item/items?id_fase=' + params['id_fase'])
def post(self,*args, **kw): '''New''' p = Item() pm = ItemManager() cm = CodigoManager() params = kw p.identificador = params['identificador'] p.observacion = params['observacion'] p.estado = 'inicial' p.complejidad = params['complejidad'] p.descripcion = params['descripcion'] p.id_fase = int(session['id_fase']) p.codigo = pm.generar_codigo(int(session['id_fase']), int(params['tipo_items'])) p.version = 1 p.actual = 'true' if params['tipo_items'] != '-1': ti = TipoItemManager() tipo= ti.getById(params['tipo_items']) p.tipo = tipo pm.add(p) if params['tipo_items'] != '-1': ti = TipoItemManager() tipo= ti.getById(params['tipo_items']) campos = tipo.campos for campo in campos: nombre_campo = campo.nombre valor = params[nombre_campo] pm.addAtributo(params['identificador'],params['id_fase'],1,campo.id_campo,valor) item = pm.getByIdentificadorFaseVersion(params['identificador'],params['id_fase'],1) '''Adjuntar nuevos Archivos''' if params['submit'] == 'Adjuntar': '''Hay que adjuntar archivos''' id_item = item.id_item raise redirect('/item/adjuntar?id_item='+ str(id_item)) raise redirect('/item/items?id_fase='+ params['id_fase'])
def put(self, *args, **kw): '''update''' params = kw pm=ItemManager() item_viejo = pm.getById(int(kw['id_item'])) complejidad = [1,2,3,4,5,6,7,8,9,10] if item_viejo.id_tipo_item != '-1': ti = TipoItemManager() tipo= ti.getById(item_viejo.id_tipo_item) campos = tipo.campos error, lista = self.verificarCampos(campos, **kw) print "despues del error" if error: print "Error en los campos" 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) print "Sin error en la actualizacion del item" item_nuevo = Item() identificador = params['identificador'] item_nuevo.identificador = identificador item_nuevo.observacion = params['observacion'] item_nuevo.estado = item_viejo.estado item_nuevo.complejidad = params['complejidad'] item_nuevo.descripcion = params['descripcion'] 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 version = item_nuevo.version pm.add(item_nuevo) pm.update(item_viejo) '''Copiar los campos''' 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 '''Adjuntar nuevos Archivos''' if params['submit'] == 'Adjuntar': '''Hay que adjuntar archivos''' id_item = item.id_item raise redirect('/item/adjuntar?id_item='+ str(id_item)) print "antes del raise - put item" raise redirect('/item/items?id_fase='+ str(id_fase))
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
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)
def post(self,*args, **kw): '''Metodo que crea un nuevo item''' p = Item() pm = ItemManager() params = kw complejidad = [1,2,3,4,5,6,7,8,9,10] try: fase, navegacion = self.getNavegacionFromIdFase(params['id_fase']) except: flash(('Direccion no valida.'), 'error') raise redirect("/index") if not(Secure().FiltrarByFase(fase.id_fase, 'creacion_item')): flash(('USTED NO CUENTA CON PERMISOS SUFICIENTES.'), 'error') raise redirect("/index") if params['submit'] == 'cancelar': raise redirect('/item/items',id_fase=fase.id_fase) lista=[] if params['tipo_items'] != '-1': ti = TipoItemManager() tipo= ti.getById(params['tipo_items']) campos = tipo.campos error, lista = self.verificarCampos(campos, **kw) if error: return dict(value=kw, model=self.model.__name__,campos = lista,id_fase=params['id_fase'],tipo_items=kw['tipo_items'], comp = complejidad,i =kw['identificador'],o=kw['observacion'], c = int(params['complejidad']), d =kw['descripcion'], navegacion=navegacion) if pm.existeIdentificador(params['identificador'],int(params['id_fase'])): flash(('Error: Ya existe un item con el nombre <<' + params['identificador'] + '>> en esta fase.'), 'Error') return dict(value=kw, model=self.model.__name__,campos = lista,id_fase=params['id_fase'],tipo_items=kw['tipo_items'], comp = complejidad,i ="",o=kw['observacion'], c = int(params['complejidad']), d =kw['descripcion'], navegacion=navegacion) p.identificador = params['identificador'] p.observacion = params['observacion'] p.estado = 'inicial' p.complejidad = params['complejidad'] p.descripcion = params['descripcion'] p.id_fase = int(kw['id_fase']) p.codigo = pm.generar_codigo(int(kw['id_fase']), int(params['tipo_items'])) p.version = 1 p.actual = 'true' if params['tipo_items'] != '-1': ti = TipoItemManager() tipo= ti.getById(params['tipo_items']) p.tipo = tipo pm.add(p) if params['tipo_items'] != '-1': ti = TipoItemManager() tipo= ti.getById(params['tipo_items']) campos = tipo.campos for campo in campos: nombre_campo = campo.nombre valor = params[nombre_campo] pm.addAtributo(params['identificador'],params['id_fase'],1,campo.id_campo,valor) item = pm.getByIdentificadorFaseVersion(params['identificador'],params['id_fase'],1) '''Adjuntar nuevos Archivos''' if params['submit'] == 'Adjuntar': '''Hay que adjuntar archivos''' id_item = item.id_item raise redirect('/item/adjuntar',id_item=id_item, contador = 1) raise redirect('/item/items',id_fase=params['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))