89 lines
2.9 KiB
Python
89 lines
2.9 KiB
Python
#! /usr/bin/env python
|
|
# -*- encoding: iso-8859-1 -*-
|
|
|
|
# Génération d'un fichier XML indiquant le status des bornes
|
|
|
|
import sys
|
|
import os
|
|
import time, urllib2
|
|
import xml.dom.minidom
|
|
|
|
def execute(macro, text):
|
|
f=macro.formatter
|
|
|
|
# ouverture du fichier d'info et parsage
|
|
try:
|
|
#os.putenv("http_proxy", "http://proxy.crans.org:3128")
|
|
status=xml.dom.minidom.parseString(urllib2.urlopen("https://wifi.crans.org/status.xml").read())
|
|
except:
|
|
return f.text(u"Impossible d'accéder aux informations des bornes")
|
|
|
|
# On récupère l'ensemble des bornes
|
|
bornes = status.childNodes[0]
|
|
code = f.text(u"Mise à jour le "+bornes.getAttribute("date"))
|
|
code += f.linebreak(0)
|
|
|
|
code += f.table(True, {'tablealign': 'center'})
|
|
|
|
code += f.table_row(True, {'rowbgcolor': '#FFFFA0'})
|
|
for nom_col in (u"Nom", u"Hotspot", u"État", u"Localisation", u"Clients",
|
|
u"MAC", u"Canal", u"Uptime", u"°E", u"°N"):
|
|
code += f.table_cell(True)
|
|
code += f.strong(True)
|
|
code += f.text(nom_col)
|
|
code += f.strong(False)
|
|
code += f.table_cell(False)
|
|
code += f.table_row(False)
|
|
|
|
|
|
bornes.childNodes.sort(lambda x, y: cmp(x.getAttribute(u"nom"),
|
|
y.getAttribute(u"nom")))
|
|
|
|
dico = {u"hotspot": {u"1": f.smiley('(./)'), u"0": f.text(u"")},
|
|
u"up": {u"1": f.smiley(u"(!)"), u"0": f.smiley(u"{X}")}}
|
|
|
|
for b in bornes.childNodes:
|
|
code += f.table_row(1)
|
|
|
|
code += f.table_cell(1)
|
|
code += f.text(b.getAttribute(u"nom"))
|
|
code += f.table_cell(0)
|
|
|
|
|
|
for nom_attribut in (u"hotspot", u"up"):
|
|
code += f.table_cell(1)
|
|
code += dico[nom_attribut][b.getAttribute(nom_attribut)]
|
|
code += f.table_cell(0)
|
|
|
|
for tag in [u'description', u"clients",u"mac",u"canal"]:
|
|
code += f.table_cell(1)
|
|
if (b.getElementsByTagName(tag)!=[]):
|
|
code += f.text(b.getElementsByTagName(tag)[0].firstChild.data)
|
|
else:
|
|
code += f.text(u"")
|
|
code += f.table_cell(0)
|
|
|
|
code += f.table_cell(1)
|
|
if (b.getElementsByTagName(u"uptime")!=[]):
|
|
code += f.text("%.2f" % float(b.getElementsByTagName(u"uptime")[0].firstChild.data)+" j")
|
|
else:
|
|
code += f.text(u"")
|
|
code += f.table_cell(0)
|
|
|
|
if (b.getElementsByTagName(u"position")!=[]):
|
|
for nom_attribut in [u'x',u'y']:
|
|
code += f.table_cell(1)
|
|
code += f.text(b.getElementsByTagName(u"position")[0].getAttribute(nom_attribut))
|
|
code += f.table_cell(0)
|
|
else:
|
|
code += f.table_cell(1)
|
|
code += f.text(u"")
|
|
code += f.table_cell(0)
|
|
code += f.table_cell(1)
|
|
code += f.text(u"")
|
|
code += f.table_cell(0)
|
|
|
|
code += f.table_row(0)
|
|
|
|
code += f.table(0)
|
|
return code
|