[Python-es] problema con las tildes

monoBOT monobot.soft en gmail.com
Dom Abr 4 10:26:01 CEST 2010


la línea 83 está en la función de grabado:

    def grabar(self, event):
        dialogo=wx.MessageDialog(None, '¿Desea Grabar y Salir?', 'Atención',
wx.YES_NO|wx.ICON_QUESTION|wx.STAY_ON_TOP)
        respuesta=dialogo.ShowModal()

        if (respuesta ==wx.ID_YES):
            print 'obteniendo valores...'
            nombres_attr = ['numerocolegiado','nombre', 'primerapellido',
'segundoapellido', 'dni', 'direccion', 'codigopostal', 'poblacion', 'email',
'telefono1', 'telefono2']
            datos_entrados = [self.ventana.entranumcol,
self.ventana.entranombre, self.ventana.entraapellido1,
self.ventana.entraapellido2, self.ventana.entradni, self.ventana.entradirec,
self.ventana.entrapost, self.ventana.entrapobl, self.ventana.entraemail,
self.ventana.entratf1, self.ventana.entratf2]
            print 'guardando...'
            for m in range(len(datos_entrados)):
                cambia_attrib(arbol='usuario', dato=nombres_attr[m],
nuevovalor=reg_xml(datos_entrados[m].GetValue()))
            nom_empr = ['nombreempresa', 'cifempresa',
'direccionempresa','codigopostalempresa', 'telefonoempresa']
            dat_empr = [self.ventana.entranombreempresa,
self.ventana.entracifempresa, self.ventana.entradireccionempresa,
self.ventana.entracodigopostalempresa, self.ventana.entratelefonoempresa]
            for m in range(len(nom_empr)):
                cambia_attrib(arbol='datosempresa', dato=nom_empr[m],
nuevovalor=reg_xml(dat_empr[m].GetValue()))
            cambia_attrib('usuario', 'colegio',
reg_xml(self.ventana.entracolegio.GetStringSelection()))
            cambia_attrib('usuario', 'provincia',
reg_xml(self.ventana.entraprov.GetStringSelection()))
            guarda_datos(datogral)
            print 'guardado'
            self.Destroy()
        else:
            print 'Cancelado'
            dialogo.Destroy()

la función de grabado lo que hace es llamar a unas
variables self.ventana.entranombreempresa     todas ellas se montan de esta
forma:
self.ventana.entranombre = wx.TextCtrl(self.ventana, -1, nombre_en_fichero)

y el valor por defecto de cada una proviene del fichero xml también:
nombre_en_fichero = xml_none(busqueda_xml ('usuario', 'nombre'))

así que lo que hago es:

lee xml ---> muestra en pantalla el dato guardado ---> el usuario cambia los
datos ---> grabo los datos.

las funciones de lectura y guardado de xml son:

def busqueda_xml (arbol, dato):
    valor =
arbol_gral.getElementsByTagName(arbol)[0].getElementsByTagName(dato)[0].childNodes[0].nodeValue
    return valor

def guarda_datos(archivo):
    fichero = open(os.path.realpath(archivo), "w")
    arbol_gral.writexml(fichero, encoding='iso-8859-1')
    fichero.close()
    return True

la funcion xml_none lo que hace es cambiar una entrada igual a cero por un
campo limpio

def xml_none(m):
    if m =='0':
        n = ''
        return n
    return m

la función contraria la pongo al grabar y lo que hace es convertir un campo
vacío en un 0, y también los caracteres prohibidos por xml por sus sutitutos
... así evito el error al grabar.

def reg_xml(m):
    if m == '':
        n = '0'
        return n
    n = m.replace('&', '&amp')
    n = n.replace('<','&lt')
    n = n.replace('>','&gt')
    return n


-- 
monobotblog.alvarezalonso.es
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20100404/90659486/attachment.html>


Más información sobre la lista de distribución Python-es