From b59ed2c3106d8f89a68779755f1624e4d9f0273d Mon Sep 17 00:00:00 2001 From: bobot Date: Sun, 23 Apr 2006 01:49:38 +0200 Subject: [PATCH] Utilisation du module xml de python. Pour faire propre et pour faire du xml facile parser par le mme module dans un autre script. Il y a surement des transformations unicode en trop et il reste un problme d'encodage au niveau de la description. Pour le premier problme j'affinerais si ncessaire. Pour le second le problme vient de ce script ou bien d'un champs de description dans la base pas totalement en unicode? darcs-hash:20060422234938-9e428-f556fa2e8040f4ddb63561835fb606e8f78b4882.gz --- wifi/status.py | 72 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 49 insertions(+), 23 deletions(-) diff --git a/wifi/status.py b/wifi/status.py index ba300f3b..19ef8e74 100755 --- a/wifi/status.py +++ b/wifi/status.py @@ -7,6 +7,7 @@ import sys import os import time sys.path.append("/usr/scripts/gestion") +sys.path.append("/usr/scripts/wifi") from canal_bornes import bornes_canal from wifi_clients import bornes_clients @@ -15,8 +16,14 @@ from uptime_bornes import bornes_uptime from ldap_crans import crans_ldap l = crans_ldap() -# On commence le fichier XML -print '' % time.strftime("%c") +import xml.dom.minidom + +# création objet xml +status=xml.dom.minidom.Document() + +xml_bornes=status.createElement(u"bornes") +status.appendChild(xml_bornes) +xml_bornes.setAttribute(u"date",time.strftime("%c")) # On récupère l'ensemble des bornes bornes = l.search('host=*.wifi.crans.org&canal=*')['borneWifi'] @@ -40,26 +47,45 @@ for b in bornes: up = 0 # Quel nom ? nom = b.nom().split(".")[0] - print '' % (nom, - hotspot, - up) - print ' %s' % infos[0].encode("utf-8") - print ' %s' % b.mac2() - try: - print ' %d' % int(canaux[nom]) - except KeyError: - pass - try: - print ' %d' % int(clients[nom]) - except KeyError: - pass - try: - print ' %s' % uptimes[nom] - except KeyError: - pass + xml_borne=status.createElement(u"borne") + xml_borne.setAttribute(u"nom",unicode(nom)) + xml_borne.setAttribute(u"hotspot",unicode(hotspot)) + xml_borne.setAttribute(u"up",unicode(up)) + + + xml_desc=status.createElement(u"description") + #xml_desc.appendChild(status.createTextNode(unicode(infos[0]))) + xml_desc.appendChild(status.createTextNode(u"Description pas compatible unicode/ascii")) + xml_borne.appendChild(xml_desc) + + xml_mac=status.createElement(u"mac") + xml_mac.appendChild(status.createTextNode(unicode(b.mac2()))) + xml_borne.appendChild(xml_mac) + + # Certains résultats (ragnarok) n'ont pas tous les champs. + if (canaux.has_key(nom)): + xml_canal=status.createElement(u"canal") + xml_canal.appendChild(status.createTextNode(unicode(int(canaux[nom])))) + xml_borne.appendChild(xml_canal) + + if (clients.has_key(nom)): + xml_clients=status.createElement(u"clients") + xml_clients.appendChild(status.createTextNode(unicode(int(clients[nom])))) + xml_borne.appendChild(xml_clients) + + if (uptimes.has_key(nom)): + xml_uptime=status.createElement(u"uptime") + xml_uptime.appendChild(status.createTextNode(unicode(uptimes[nom]))) + xml_borne.appendChild(xml_uptime) + + position = b.position() if position: - print ' ' % (position[1], position[0]) - print '' - -print '' + xml_position=status.createElement(u"position") + xml_position.setAttribute(u"x",unicode(position[1])) + xml_position.setAttribute(u"y",unicode(position[0])) + xml_borne.appendChild(xml_position) + + xml_bornes.appendChild(xml_borne) + +print (status.toxml())