def saveItem(self, **kw):
        unItem = Item()
        unItem.nom_item = kw["nomItem"]
        # aProject.des_proyecto = kw['descripcion']
        DBSession.add(unItem)

        unaVersionItem = VersionItem()
        unaVersionItem.item = unItem

        unEstado = DBSession.query(Estado).filter_by(id_estado=1).one()
        unTipoItem = DBSession.query(TipoItem).filter_by(id_tipo_item=1).one()
        unUsuario = DBSession.query(Usuario).filter_by(id_usuario=1).one()

        unaVersionItem.estado = unEstado
        unaVersionItem.tipoItem = unTipoItem
        unaVersionItem.usuarioModifico = unUsuario
        unaVersionItem.fecha = "10/06/2011"
        unaVersionItem.observaciones = kw["observaciones"]
        # unaVersionItem.peso = kw['peso']

        DBSession.add(unaVersionItem)

        for atributo in DBSession.query(Atributo).filter_by(tipoItem=unTipoItem):
            nuevoAtributoItem = AtributoItem()
            nuevoAtributoItem.atributo = atributo
            nuevoAtributoItem.versionItem = unaVersionItem
            nuevoAtributoItem.val_atributo = atributo.val_default
            DBSession.add(nuevoAtributoItem)

        flash(_("Se ha creado un nuevo Item: %s") % kw["itemName"], "info")
        redirect("adminItem")
    def saveAtributo(self, **kw):
        tipoItem = DBSession.query(TipoItem).\
            filter(TipoItem.id_tipo_item==(kw['id_tipo'])).one()
        tipoDato = DBSession.query(TipoDatoAtributo).\
            filter(TipoDatoAtributo.id_tipo_dato==int(kw['tipo_dato'])).one()
		
        if int(kw['save_as']) == 0:
            '''Opcion para Nuevos Items'''
            newAtri = Atributo(kw['nom_atributo'], tipoDato, tipoItem)
        
            if tipoDato.nom_tipo_dato == 'numerico':
                newAtri.val_default = kw['def_numerico']
        
            elif tipoDato.nom_tipo_dato == 'texto':
                newAtri.val_default = kw['def_texto']
            
            elif tipoDato.nom_tipo_dato == 'fecha':
                if not kw['def_fecha'] == None:
                    newAtri.val_default = kw['def_fecha'].strftime('%d/%m/%y')
                else:
                    newAtri.val_default = kw['def_fecha']
        
        else:
            '''Opcion para Nuevos y Actuales Items'''
            newAtri = Atributo(kw['nom_atributo'], tipoDato, tipoItem)
        
            if tipoDato.nom_tipo_dato == 'numerico':
                newAtri.val_default = kw['def_numerico']
        
            elif tipoDato.nom_tipo_dato == 'texto':
                newAtri.val_default = kw['def_texto']
            
            elif tipoDato.nom_tipo_dato == 'fecha':
                if not kw['def_fecha'] == None:
                    newAtri.val_default = kw['def_fecha'].strftime('%d/%m/%y')
                else:
                    newAtri.val_default = kw['def_fecha']
                
            item_list = DBSession.query(VersionItem).\
                filter(VersionItem.ultima_version == 'S').\
                filter(VersionItem.tipoItem==tipoItem).all()
                
            for item in item_list:
                        
                item.ultima_version = 'N'
        
                lg_name=request.identity['repoze.who.userid']
                usuario = DBSession.query(Usuario).\
                    filter(Usuario.login_name==lg_name).one()
            
                nuevaVersionItem = VersionItem()
                nuevaVersionItem.item = item.item        
                nuevaVersionItem.nro_version_item = item.nro_version_item+1
                nuevaVersionItem.estado = item.estado       
                nuevaVersionItem.tipoItem = item.tipoItem         
                nuevaVersionItem.usuarioModifico = usuario
                nuevaVersionItem.fecha = str(datetime.now())
                nuevaVersionItem.observaciones = item.observaciones
                nuevaVersionItem.ultima_version = 'S'
                nuevaVersionItem.peso = item.peso
                nuevaVersionItem.id_fase = item.id_fase
                        
                # Agregar los antecesores del item viejo
                for antecesor in item.Antecesores:
                    nuevaVersionItem.Antecesores.append(antecesor)
        
                # Agregar los sucesores del item viejo
                try:
                    antecesor = DBSession.query(Antecesor).\
                    filter(Antecesor.id_version_item == item.id_version_item).\
                    one()
            
                    nuevoAntecesor = Antecesor(nuevaVersionItem.id_version_item)
           
                    sucesores = antecesor.sucesores
                    for sucesor in sucesores:
                        sucesor.Antecesores.append(nuevoAntecesor)
                except NoResultFound,e:                    
                    existe=False
        
                # Agregar los padres del item viejo       
                for padre in item.Padres:
                    nuevaVersionItem.Padres.append(padre)
            
                # Agregar los hijos del item viejo
                try:
                    padre = DBSession.query(Padre).\
                    filter(Padre.id_version_item == item.id_version_item).\
                    one()
            
                    nuevoPadre = Padre(nuevaVersionItem.id_version_item)
           
                    hijos = padre.hijos
                    for hijo in hijos:                
                        hijo.Padres.append(nuevoPadre)
                except NoResultFound,e:
                    existe=False
            
                # Copiamos los atributos del item viejo
                for atributo in DBSession.query(AtributoItem).\
                    filter(AtributoItem.id_version_item == item.id_version_item).all():
                
                    nuevoAtributoItem = AtributoItem()
                    nuevoAtributoItem.id_atributo = atributo.id_atributo
                    nuevoAtributoItem.id_version_item = nuevaVersionItem.id_version_item        
                    nuevoAtributoItem.val_atributo = atributo.val_atributo
                    DBSession.add(nuevoAtributoItem)
                                
                atriItem = AtributoItem()
                atriItem.atributo = newAtri
                atriItem.id_version_item = nuevaVersionItem.id_version_item
                atriItem.val_atributo = newAtri.val_default
                DBSession.add(atriItem)