El día 5 de abril de 2010 00:15, monoBOT <monobot.s...@gmail.com> escribió:
> ´Funciona como un guante!!! ... muchas gracias luis miguel
>
OK. Ahora tu programa es portable a otros equipos. Si solucionas el
problema modificando el sitecustomize.py, sólo funcionará en ese
equipo.


Saludos,

--

Luis Miguel


> El 4 de abril de 2010 23:04, monoBOT <monobot.s...@gmail.com> escribió:
>>
>> Muchas gracias lo probare.
>>
>> El 4 de abril de 2010 22:38, Luis Miguel Morillas <moril...@gmail.com>
>> escribió:
>>>
>>> El día 4 de abril de 2010 10:26, monoBOT <monobot.s...@gmail.com>
>>> escribió:
>>> > 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
>>>
>>> El error lo genera writexml en esta función. Yo no utilizo minidom,
>>> pero supongo que esto te funcionará:
>>>
>>> import codecs # esto ponlo al principio del fichero
>>>
>>> def guarda_datos(archivo):
>>>      fichero = codecs.open(os.path.realpath(archivo),  "w", 'iso-8859-1')
>>>      arbol_gral.writexml(fichero, encoding='iso-8859-1')
>>>      fichero.close()
>>>      return True
>>>
>>> Si quieres utilizar tu código en un sistema en producción, habría que
>>> revisar algunas cosas. Yo te recomiendo utilizar otros módulos en
>>> lugar de minidom. Echa un vistazo a Amara
>>> (http://wiki.xml3k.org/Amara2), te permite manejar xml como si fueran
>>> objetos python.
>>>
>>> --lm
>>>
>>> > 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
>>> > _______________________________________________
>>> > Python-es mailing list
>>> > Python-es@python.org
>>> > http://mail.python.org/mailman/listinfo/python-es
>>> > FAQ: http://python-es-faq.wikidot.com/
>>> >
>>> >
>>> _______________________________________________
>>> Python-es mailing list
>>> Python-es@python.org
>>> http://mail.python.org/mailman/listinfo/python-es
>>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>>
>> --
>> Héctor Alvarez
>> Arquitecto
>>
>> Advertencia legal:
>> De acuerdo a la vigente Ley Orgánica 15/1999 de Protección de Datos de
>> carácter Personal le informamos que:
>> Este correo electrónico contiene información privada y estrictamente
>> confidencial. Si usted NO ES el destinatario, NO ESTA AUTORIZADO a leerlo,
>> directa o indirectamente, usar, revelar, distribuir, imprimir o copiar
>> ninguna de las partes y/o anexos de éste mensaje. Si por error ha recibido
>> este mensaje, le rogamos lo notifique a su emisor respondiendo a éste e-mail
>> y proceda a borrar de su sistema inmediatamente el mensaje así como todas
>> sus copias.
>
>
>
> --
> Héctor Alvarez
> Arquitecto
>
> Advertencia legal:
> De acuerdo a la vigente Ley Orgánica 15/1999 de Protección de Datos de
> carácter Personal le informamos que:
> Este correo electrónico contiene información privada y estrictamente
> confidencial. Si usted NO ES el destinatario, NO ESTA AUTORIZADO a leerlo,
> directa o indirectamente, usar, revelar, distribuir, imprimir o copiar
> ninguna de las partes y/o anexos de éste mensaje. Si por error ha recibido
> este mensaje, le rogamos lo notifique a su emisor respondiendo a éste e-mail
> y proceda a borrar de su sistema inmediatamente el mensaje así como todas
> sus copias.
>
> _______________________________________________
> Python-es mailing list
> Python-es@python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Reply via email to