示例#1
0
文件: item_detalle.py 项目: mbaez/SAP
	def put(self, id, **kw):
		"""
		Evento invocado luego de un evento post en el form de editar
		encargado de persistir las modificaciones de las instancias.

		@type  id : Integer
		@param id : Identificador del Detalle del item.

		@type  kw : Hash
		@param kw : Keywords

		"""
		detalle =  DBSession.query(DetalleItem).get(id)
		detalle.valor = kw['valor']
		detalle.observacion = kw ['observacion']

		DBSession.merge(detalle)
		DBSession.flush()

		item = DBSession.query(Item).get(detalle.id_item)

		item_util.audit_item(item)
		item.version += 1
		DBSession.merge(item)

		flash("El item atributo ha sido modificado correctamente.")
		redirect('/miproyecto/fase/item/poner_en_revision/'+str(detalle.id_item))
示例#2
0
文件: checker.py 项目: mbaez/SAP
	def commit_transaction(self, can_commit):
		"""
		Realiza commit de la transaccion

		@type  can_commit  : Boolean
		@param can_commit  : Variable de control de la transaccion
		"""
		if can_commit == True :
			DBSession.flush()
			transaction.commit()
示例#3
0
文件: __init__.py 项目: mbaez/SAP
 def setup(self):
     try:
         new_attrs = {}
         new_attrs.update(self.attrs)
         new_attrs.update(self.do_get_dependencies())
         self.obj = self.klass(**new_attrs)
         DBSession.add(self.obj)
         DBSession.flush()
         return self.obj
     except:
         DBSession.rollback()
         raise
示例#4
0
 def setUp(self):
     """Prepare model test fixture."""
     try:
         new_attrs = {}
         new_attrs.update(self.attrs)
         new_attrs.update(self.do_get_dependencies())
         self.obj = self.klass(**new_attrs)
         DBSession.add(self.obj)
         DBSession.flush()
         return self.obj
     except:
         DBSession.rollback()
         raise
示例#5
0
    def post(self, *args, **kw):

        userfile = kw['userfile']
        log.debug("kwwww: %s" % kw)

        forbidden_files = [".js", ".htm", ".html"]
        for forbidden_file in forbidden_files:
            if userfile.filename.find(forbidden_file) != -1:
                return redirect("/adjuntos/new")
        filecontent = userfile.file.read()
        new_file = Adjuntos(filename=userfile.filename,
                            filecontent=filecontent)
        DBSession.add(new_file)
        DBSession.flush()
        redirect("/adjuntos/new")

        #self.provider.create(self.model, params=kw)

        raise redirect('/adjuntos/new')
示例#6
0
文件: item.py 项目: mbaez/SAP
	def eliminar(self, id_item):
		#se utiliza el campo estado para determinar en la tabla historial que
		#esta muerto
		item = item_util.get_current(id_item)


		has_permiso = fase_util.check_fase_permiso(item.fase,'ver_item',True)
		if ( has_permiso == None) :
			flash("No posee permisos sobre la fase #"+ \
				str(self.params['item'].fase),'warning')

			redirect('/miproyecto/fase/item/error')

		#validar que no pertenezca a una linea base
		if (not item_util.verificar_linea_base(item)):
			flash('El item pertence a un linea base Cerrada y no puede ser eliminado','warning')
			redirect("/miproyecto/fase/item/ver/"+str(item.id_item))

		relaciones = DBSession.query(RelacionItem).\
								filter(or_(RelacionItem.id_item_actual == item.id_item,
								RelacionItem.id_item_relacionado == item.id_item)).all()

		print 'len = '+ str(len(relaciones))

		for relacion in relaciones:
			if item_util.deja_huerfanos(relacion):
				flash('El item no puede ser eliminado ya que algun item de la fase siguiente depende de este', 'warning')
				redirect("/miproyecto/fase/item/ver/"+str(item.id_item))

		#estado muerto
		item.estado = 4
		item_util.audit_item(item)

		#se eliminan las relaciones que contienen al item
		for relacion in relaciones:
			DBSession.delete(relacion)

		DBSession.flush()

		DBSession.delete(item)
		flash("El item fue eliminado con exito")
		redirect("/miproyecto/fase/get_all/"+str(item.fase))
示例#7
0
 def post(self, *args, **kw):
     
     userfile=kw['userfile']
     log.debug("kwwww: %s" %kw)
     
     forbidden_files = [".js", ".htm", ".html"]
     for forbidden_file in forbidden_files:
         if userfile.filename.find(forbidden_file) != -1:
             return redirect("/adjuntos/new")
     filecontent = userfile.file.read()
     new_file = Adjuntos(filename=userfile.filename, filecontent=filecontent)
     DBSession.add(new_file)
     DBSession.flush()
     redirect("/adjuntos/new")
     
     
     #self.provider.create(self.model, params=kw)
     
     
     raise redirect('/adjuntos/new')
示例#8
0
文件: root.py 项目: Alberto2011/SAP
    def create(self, **kw):
        adjuntos = Adjuntos()

        #save the filename to the database
        #adjuntos.idItem= kw['idItem']
        adjuntos.picture_filename = kw['adjuntos_filename'].filename
        #DBSession.add(adjuntos)
        DBSession.flush()
        """#write the picture file to the public directory
            adjuntos_path = os.path.join(adjuntos_dirname, str(adjuntos.id))
            try:
                os.makedirs(adjuntos_path)
            except OSError:
                #ignore if the folder already exists
                pass
                
            adjuntos_path = os.path.join(adjuntos_path, adjuntos.adjuntos_filename)
            f = file(adjuntos_path, "w")
            f.write(kw['adjuntos_filename'].value)
            f.close()
            """
        #flash("adjuntos was successfully created.")
        redirect("./adjuntos")
示例#9
0
文件: root.py 项目: Alberto2011/SAP
 def create(self, **kw):
         adjuntos = Adjuntos()
                     
         #save the filename to the database
         #adjuntos.idItem= kw['idItem']
         adjuntos.picture_filename = kw['adjuntos_filename'].filename
         #DBSession.add(adjuntos)
         DBSession.flush()
     
         """#write the picture file to the public directory
         adjuntos_path = os.path.join(adjuntos_dirname, str(adjuntos.id))
         try:
             os.makedirs(adjuntos_path)
         except OSError:
             #ignore if the folder already exists
             pass
             
         adjuntos_path = os.path.join(adjuntos_path, adjuntos.adjuntos_filename)
         f = file(adjuntos_path, "w")
         f.write(kw['adjuntos_filename'].value)
         f.close()
         """
         #flash("adjuntos was successfully created.")
         redirect("./adjuntos")
示例#10
0
文件: atributo.py 项目: mbaez/SAP
	def post(self, idtipo,args={}, **kw):
		"""
		Evento invocado luego de un evento post en el form de crear
		ecargado de persistir las nuevas instancias.

		@type  idtipo : Integer
		@param idtipo : Identificador del tipo de item.

		@type  args : Hash
		@param args : Argumentos de template

		@type  kw : Hash
		@param kw : Keywords

		"""
		del kw['sprox_id']
		atributo_tipo_item = AtributoTipoItem()
		atributo_tipo_item.tipo_item = idtipo
		atributo_tipo_item.nombre = kw['nombre']
		atributo_tipo_item.tipo_id = kw['tipo']
		DBSession.add(atributo_tipo_item)

		items = DBSession.query(Item).filter(Item.tipo_item==idtipo)

		for item in items :
			detalle = DetalleItem()
			detalle.nombre = atributo_tipo_item.nombre
			detalle.id_atributo_tipo_item = atributo_tipo_item.id_atributo_tipo_item
			detalle.valor = None
			detalle.recurso = None
			item.detalles.append(detalle)
			DBSession.merge(item)
		DBSession.flush()

		flash("El Atributo del tipo de Item ha sido creado correctamente")
		redirect('/miproyecto/fase/tipo_item/atributos/'+idtipo+'/new')
示例#11
0
    def post(self, *args, **kw):
        """Se crea un nuevo item"""
        itemeditado = DBSession.query(Item).filter_by(id=kw['idItem1']).first()
        itemnuevo = Item()
        itemnuevo.version = itemeditado.version + 1
        itemnuevo.idTipoDeItem = itemeditado.idTipoDeItem
        itemnuevo.idFase = itemeditado.idFase
        itemnuevo.idLineaBase = itemeditado.idLineaBase
        itemnuevo.fechaCreacion = itemeditado.fechaCreacion
        itemnuevo.nrohistorial = itemeditado.nrohistorial
        itemnuevo.ultimaversion = 1
        itemeditado.ultimaversion = 0
        itemnuevo.estado = 'modificado'
        itemnuevo.complejidad = itemeditado.complejidad
        itemnuevo.nombre = itemeditado.nombre
        DBSession.add(itemnuevo)
        DBSession.flush()
        """-------------------------"""
        """ Crea las nuevas relaciones"""

        kw['idItem1'] = itemnuevo.id
        """ Se crea las relaciones"""
        ids = kw['idItem2']
        longitud = len(kw['idItem2'])
        for indice in range(longitud):
            kw['idItem2'] = ids[indice]
            self.provider.create(self.model, params=kw)

        ids = kw['idItem2Anterior']
        longitud = len(kw['idItem2Anterior'])
        for indice in range(longitud):
            kw['idItem2'] = ids[indice]
            self.provider.create(self.model, params=kw)
        """Realiza copia de los valores de los atributos especificos"""

        atributoeditado = DBSession.query(DetalleItem).filter_by(
            iditem=itemeditado.id).all()

        for objeto in atributoeditado:
            nuevoDetalle = DetalleItem()
            nuevoDetalle.tipo = objeto.tipo
            nuevoDetalle.nombrecampo = objeto.nombrecampo
            nuevoDetalle.valor = objeto.valor
            nuevoDetalle.iditem = itemnuevo.id
            DBSession.add(nuevoDetalle)
        """Realiza copia de los adjuntos"""
        adjuntositemeditado = DBSession.query(Adjuntos).filter_by(
            idItem=itemeditado.id).all()

        for adj in adjuntositemeditado:
            itemnuevoadjunto = Adjuntos()
            itemnuevoadjunto.idItem = itemnuevo.id
            itemnuevoadjunto.filename = adj.filename
            itemnuevoadjunto.filecontent = adj.filecontent
            DBSession.add(itemnuevoadjunto)
        """Copia las relaciones """
        #itemnuevo=DBSession.query(Item.id).filter_by(nrohistorial=nuevo['nrohistorial'], ultimaversion=1).first()
        relaciones = DBSession.query(
            RelacionItem.idItem1, RelacionItem.idItem2).filter(
                (RelacionItem.idItem2 == itemeditado.id)
                | (RelacionItem.idItem1 == itemeditado.id)).all()

        longitud = len(relaciones)

        for x in range(longitud):
            newRelation = {}
            if int(itemeditado.id) == int(relaciones[x][0]):
                newRelation['idItem1'] = int(itemnuevo.id)
                newRelation['idItem2'] = relaciones[x][1]
                self.provider.create(RelacionItem, params=newRelation)
            elif int(itemeditado.id) == int(relaciones[x][1]):
                newRelation['idItem1'] = relaciones[x][0]
                newRelation['idItem2'] = int(itemnuevo.id)
                self.provider.create(RelacionItem, params=newRelation)

        raise redirect('./?iid=' + str(kw['idItem1']))
示例#12
0
文件: util.py 项目: mbaez/SAP
	def revertir_item (self, historial_item):
		"""
		Dada una entidad HistorialItem que representa una version
		anterior del item en si se obtiene de la tabla las entradas de
		esa version para que el item recupere los valores de esa version
		"""
		#debe ser una version posterior a la actual
		item = DBSession.query(Item).get(historial_item.id_item)
		detalles = item.detalles
		print "Recuperar el item "+str(item)
		item.nombre = historial_item.nombre
		item.codigo = historial_item.codigo
 		item.estado_actual = estado_item_util.get_by_codigo('Revision')
		#item.estado = item.estado_actual.id_estado_item
		item.tipo_item = historial_item.tipo_item
		item.fase = historial_item.fase
		item.version += 1
		item.prioridad = historial_item.prioridad
		item.complejidad = historial_item.complejidad
		item.descripcion = historial_item.descripcion
		item.observacion = historial_item.observacion
		item.linea_base = None

		#Se borran todos los archivos
		print "Borrando todos los archivos acutales"
		for archivo in item.archivos :
			DBSession.delete(archivo)
		#Se reestauran todos los arachivos
		item.archivos = []
		DBSession.merge(item)
		print "Anhadiendo nuevos archivos."
		for archivo in historial_item.archivos :
			print "archivo: "+ str(archivo)
			new_archivo = Archivo()
			new_archivo.archivo = archivo.archivo
			new_archivo.file_name = archivo.file_name
			new_archivo.content_type = archivo.content_type
			new_archivo.id_item = item.id_item

			DBSession.add(new_archivo)


		print "Recuperar los detalles"
		#recuperar los detalles
		historial_detalles = DBSession.query(HistorialDetalleItem).\
			filter(HistorialDetalleItem.id_historial == historial_item.id_historial_item).\
			all()

		#variable para indexar las posiciones que corresponden a los valores
		#de esa version
		atributo_mapper = {}
		index = 0

		"""
		Se establecen los detalles actuales del item a None
		para que el item conserve los campos definidos por su tipo de
		item. El item recuperara los valores de la version a la cual se
		quiere revertir
		"""
		for detalle in item.detalles:
			detalle.valor = None
			detalle.observacion = None
			atributo_mapper[detalle.id_atributo_tipo_item] = index
			index += 1

		for hist_detalle in historial_detalles:

			index = atributo_mapper[hist_detalle.id_atributo_tipo_item]

			item.detalles[index].observacion = hist_detalle.observacion
			item.detalles[index].valor = hist_detalle.valor

		DBSession.merge(item)

		#borrar las relaciones actuales
		relaciones = DBSession.query(RelacionItem).\
							filter(or_(RelacionItem.id_item_actual == item.id_item,
							RelacionItem.id_item_relacionado == item.id_item)).\
							all()
		print relaciones

		for relacion in relaciones:
			#se verifica que no deje huerfanos
			if not self.deja_huerfanos(relacion):
				print 'borrando relacion'
				DBSession.delete(relacion)

		print "Recuperar las relaciones"
		#recuperar los relaciones
		historial_relaciones = DBSession.query(HistorialRelacion).\
			filter(HistorialRelacion.id_item_1 == item.id_item or
			HistorialRelacion.id_item_2 == item.id_item).\
			all()

		print historial_relaciones

		for hist_relacion in historial_relaciones:
			relacion = RelacionItem()
			if(DBSession.query(Item).get(hist_relacion.id_item_1)!=None and
				DBSession.query(Item).get(hist_relacion.id_item_2)!=None):
				relacion.id_item_actual = hist_relacion.id_item_1
				relacion.id_item_relacionado = hist_relacion.id_item_2
				relacion.relacion_parentesco = hist_relacion.id_tipo_relacion
				DBSession.merge(relacion)

		print "Merge"
		DBSession.merge(item)
		print "Flush"
		DBSession.flush()
		return
示例#13
0
文件: util.py 项目: mbaez/SAP
	def audit_item(self, item):
		"""
		Registra los cambios realizados al item determinado en el historial
		se persiste los valore del item y su atributos en el historial.

		@type  item  : Integer
		@param item  : Identificador del proyecto al cual se va aplicar el rol
		"""
		historial = HistorialItem()

		historial.id_item = item.id_item
		historial.nombre = item.nombre
		historial.codigo = item.codigo
		historial.estado = item.estado
		historial.tipo_item = item.tipo_item
		historial.fase = item.fase
		historial.version = item.version
		historial.prioridad = item.prioridad
		historial.complejidad = item.complejidad
		historial.descripcion = item.descripcion
		historial.observacion = item.observacion

		#~ #historial de detalles
		#~ detalles = DBSession.query(DetalleItem).\
					#~ filter(DetalleItem.id_item==item.id_item).\
					#~ all()
		for archivo in item.archivos :
			historial_archivo = HistorialArchivo()
			historial_archivo.archivo = archivo.archivo
			historial_archivo.file_name = archivo.file_name
			historial_archivo.content_type = archivo.content_type
			historial_archivo.id_historial =  historial.id_historial_item
			historial_archivo.id_item = archivo.id_item

			historial.archivos.append(historial_archivo)

		for detalle in item.detalles:
			historial_detalle = HistorialDetalleItem()
			historial_detalle.id_detalle = detalle.id_item_detalle
			historial_detalle.id_atributo_tipo_item = detalle.id_atributo_tipo_item
			historial_detalle.id_item = detalle.id_item
			historial_detalle.observacion = detalle.observacion
			historial_detalle.valor = detalle.valor

			historial.detalles.append(historial_detalle)

		#Obtener las relaciones
		relaciones = DBSession.query(RelacionItem).\
							filter(or_(RelacionItem.id_item_actual == item.id_item,
							RelacionItem.id_item_relacionado == item.id_item)).\
							all()

		print relaciones

		for relacion in relaciones:
			historial_relacion = HistorialRelacion()
			historial_relacion.id_item_1 = relacion.id_item_actual
			historial_relacion.id_item_2 = relacion.id_item_relacionado
			historial_relacion.id_tipo_relacion = relacion.relacion_parentesco
			historial.relaciones.append(historial_relacion)

		DBSession.add(historial)
		DBSession.flush()
示例#14
0
   def post(self, *args, **kw):
       
 
       """Se crea un nuevo item"""
       itemeditado=DBSession.query(Item).filter_by(id=kw['idItem1']).first()
       itemnuevo=Item()
       itemnuevo.version=itemeditado.version + 1
       itemnuevo.idTipoDeItem=itemeditado.idTipoDeItem
       itemnuevo.idFase=itemeditado.idFase
       itemnuevo.idLineaBase=itemeditado.idLineaBase
       itemnuevo.fechaCreacion=itemeditado.fechaCreacion
       itemnuevo.nrohistorial=itemeditado.nrohistorial
       itemnuevo.ultimaversion=1
       itemeditado.ultimaversion=0
       itemnuevo.estado='modificado'
       itemnuevo.complejidad=itemeditado.complejidad
       itemnuevo.nombre=itemeditado.nombre
       DBSession.add(itemnuevo)
       DBSession.flush()
       
       """-------------------------"""
       
       
       """ Crea las nuevas relaciones"""
       
       kw['idItem1']=itemnuevo.id
       """ Se crea las relaciones"""
       ids=kw['idItem2']
       longitud=len(kw['idItem2'])
       for indice in range(longitud):
           kw['idItem2']=ids[indice] 
           self.provider.create(self.model, params=kw)
           
       ids=kw['idItem2Anterior']
       longitud=len(kw['idItem2Anterior'])
       for indice in range(longitud):
           kw['idItem2']=ids[indice] 
           self.provider.create(self.model, params=kw)
   
       
       """Realiza copia de los valores de los atributos especificos"""
           
       atributoeditado=DBSession.query(DetalleItem).filter_by(iditem=itemeditado.id).all()
           
       for objeto in atributoeditado:
           nuevoDetalle=DetalleItem()
           nuevoDetalle.tipo=objeto.tipo
           nuevoDetalle.nombrecampo=objeto.nombrecampo
           nuevoDetalle.valor=objeto.valor
           nuevoDetalle.iditem=itemnuevo.id
           DBSession.add(nuevoDetalle)
               
       """Realiza copia de los adjuntos"""
       adjuntositemeditado=DBSession.query(Adjuntos).filter_by(idItem=itemeditado.id).all()
       
       for adj in adjuntositemeditado:
           itemnuevoadjunto=Adjuntos()
           itemnuevoadjunto.idItem=itemnuevo.id
           itemnuevoadjunto.filename=adj.filename
           itemnuevoadjunto.filecontent=adj.filecontent
           DBSession.add(itemnuevoadjunto)
       
       
       """Copia las relaciones """
       #itemnuevo=DBSession.query(Item.id).filter_by(nrohistorial=nuevo['nrohistorial'], ultimaversion=1).first()
       relaciones = DBSession.query(RelacionItem.idItem1,RelacionItem.idItem2).filter((RelacionItem.idItem2==itemeditado.id) | (RelacionItem.idItem1==itemeditado.id)).all()
       
       longitud = len(relaciones)
       
       
       for x in range(longitud):
           newRelation = {}
           if int(itemeditado.id) == int(relaciones[x][0]):
               newRelation['idItem1']=int(itemnuevo.id)
               newRelation['idItem2']=relaciones[x][1]
               self.provider.create(RelacionItem, params=newRelation)
           elif int(itemeditado.id) == int(relaciones[x][1]):
               newRelation['idItem1']=relaciones[x][0]
               newRelation['idItem2']=int(itemnuevo.id)
               self.provider.create(RelacionItem, params=newRelation)
       
       
       raise redirect('./?iid='+str(kw['idItem1']))
示例#15
0
文件: item.py 项目: mbaez/SAP
	def put(self, id_item, **kw):
		item =  DBSession.query(Item).get(id_item)
		# Se registra en el historial el item antes de ser modificado
		item_util.audit_item(item)
		# Se modifica el item
		item.descripcion = kw['descripcion']
		#item.codigo = kw['codigo']
		item.nombre = kw['nombre']
		item.complejidad = kw['complejidad']
		item.prioridad = kw['prioridad']
		item.observacion = kw['observacion']
		item.version = int(item.version) + 1
		item.estado = 2 # En Desarrollo
		#Se persiste el item
		DBSession.merge(item)
		DBSession.flush()

		#se verifica si ya tenia un padre
		relacion = DBSession.query(RelacionItem).\
					filter(RelacionItem.id_item_relacionado==item.id_item).\
					filter(RelacionItem.relacion_parentesco==1).\
					all()

		#se borra las relacion padre hijo si existia
		if relacion != []:
			DBSession.delete(relacion[0])

		# Si se elijio NONE en las relaciones no se hace nada
		if(kw['relaciones'] != None):

			item_padre_antecesor = DBSession.query(Item).get(kw['relaciones'])

			item_util.audit_item(item_padre_antecesor)
			item_padre_antecesor.version += 1

			DBSession.merge(item_padre_antecesor)
			DBSession.flush()

			#tipo de relacion 1 padre-hijo, 2 antecesor sucesor
			tipo_relacion = 2
			if item_padre_antecesor.fase == int(item.fase):
				tipo_relacion = 1

			rel = RelacionItem()
			rel.relacion_parentesco = tipo_relacion
			rel.id_item_actual = kw['relaciones']
			rel.id_item_relacionado = item.id_item
			DBSession.add(rel)

			DBSession.flush()

		fase = DBSession.query(Fase).get(item.fase)
		grafo = item_util.proyectGraphConstructor(fase.proyecto)
		item_util.marcar_en_revision(grafo, item.id_item)

		#la linea del item modificado permanece abierta
		if item.linea_base != None:
			linea = item.linea_base
			linea.estado = estado_linea_base_util.get_by_codigo('Abierta')

		flash("El item " +str(item.nombre)+ " ha sido modificado correctamente.")
		redirect('/miproyecto/fase/item/ver/'+str(item.id_item))
示例#16
0
文件: item.py 项目: mbaez/SAP
	def post(self, idfase, args={},**kw):
		"""
		Evento invocado luego de un evento post en el form de crear
		ecargado de persistir las nuevas instancias.

		@type  idfase : Integer
		@param idfase : Identificador de la fase.

		@type  args : Hash
		@param args : Argumentos de template

		@type  kw : Hash
		@param kw : Keywords

		"""

		del kw['sprox_id']
		item = Item()
		item.nombre = kw['nombre']
		item.descripcion = kw['descripcion']
		item.complejidad = kw['complejidad']
		item.prioridad = kw['prioridad']
		item.observacion = kw['observacion']
		item.fase = idfase
		# Se crea con estado En Desarrollo por defecto
		item.estado = 2
		item.tipo_item = kw['tipo_item_relacion']
		item.version = 1

		tipo_item = DBSession.query(TipoItem).get(item.tipo_item)

		#anhadir detalles al item segun el tipo de item al cual corresponda
		item.detalles = item_util.anadir_detalles(tipo_item)

		item.codigo = item_util.gen_cod(idfase, item.tipo_item)
		DBSession.add(item)
		DBSession.flush()

		# Se guarda la relacion elegida en el formulario
		if(kw['relaciones'] != None):

			relacion = RelacionItem()
			#el padre es el item que se selecciono en el combo
			relacion.id_item_actual = kw['relaciones']
			#el item nuevo es el hijo
			relacion.id_item_relacionado = item.id_item
			item_relacionado = DBSession.query(Item).get(kw['relaciones'])

			#auditar el item
			item_util.audit_item(item_relacionado)
			item_relacionado.version += 1

			DBSession.merge(item_relacionado)
			DBSession.flush()

			if(item_relacionado.fase == int(idfase)):
				#relacion padre-hijo
				relacion.relacion_parentesco = 1
			else:
				relacion.relacion_parentesco = 2

 			DBSession.add(relacion)
			DBSession.flush()

		#flash("El item se ha creado correctamente")
		redirect('/miproyecto/fase/item/ver/'+str(item.id_item))