whosthere: proprification (PEP8 et cie)

This commit is contained in:
Daniel STAN 2015-07-03 18:27:05 +02:00
parent 6b64af3314
commit 6b63e030a6

View file

@ -5,16 +5,15 @@
à des fins de perms, et cie, filtre par membres actifs.''' à des fins de perms, et cie, filtre par membres actifs.'''
import sys import sys
from socket import gethostname
import collections import collections
import os import os
import xml.dom.minidom import xml.dom.minidom
from gestion.ldap_crans import crans_ldap, MachineWifi from gestion.ldap_crans import crans_ldap, AssociationCrans
from gestion.hptools import hpswitch, ConversationError from gestion.hptools import hpswitch, ConversationError
from gestion.affich_tools import coul, cprint from gestion.affich_tools import cprint
from gestion.whos import aff
import gestion.affichage as affichage import gestion.affichage as affichage
import gestion.mail as mail_module
# Constantes pour munin. # Constantes pour munin.
# L'ordre est important : il détermine comment sont empilées les valeurs # L'ordre est important : il détermine comment sont empilées les valeurs
@ -27,10 +26,13 @@ STATE_DESCR = collections.OrderedDict([
('adh', ('autres machines appartenant aux autres adhérents', 0xe5ff00)), ('adh', ('autres machines appartenant aux autres adhérents', 0xe5ff00)),
]) ])
CLUB_CRANS = 35 DN_CLUB_CRANS = 'cid=35,'
CLUB_BDE = 1 DN_CLUB_BDE = 'cid=1,'
WIFIMAP_DIR = os.getenv('DBG_WIFIMAP_DB', '/usr/scripts/var/wifi_xml')
def pretty_name(item): def pretty_name(item):
"""Affiche un joli nom pour un objet ldap (adh ou machine)"""
v = "" v = ""
if hasattr(item, 'nom'): if hasattr(item, 'nom'):
@ -38,10 +40,13 @@ def pretty_name(item):
if hasattr(item, 'prenom'): if hasattr(item, 'prenom'):
v = item.prenom() + " " + v v = item.prenom() + " " + v
v = v.replace('.wifi.crans.org', ' (WiFi)') v = v.replace('.wifi.crans.org', ' (WiFi)')
v = v.replace('.adm.crans.org', '')
v = v.replace('.crans.org', '') v = v.replace('.crans.org', '')
return v return v
def show_liste_by_prop(liste): def show_liste_by_prop(liste):
"""Récupère une liste de machines et affiche un tableau deux colonnes
avec propriétaire d'un côté et ses machines de l'autre."""
by_owner = dict() by_owner = dict()
for machine in liste: for machine in liste:
@ -58,10 +63,13 @@ def show_liste_by_prop(liste):
alignement=['g', 'g']).rstrip() alignement=['g', 'g']).rstrip()
def show_liste(liste): def show_liste(liste):
"""Affiche une liste d'objet ldap"""
print ", ".join(pretty_name(m) for m in liste) print ", ".join(pretty_name(m) for m in liste)
def _mucode(u): def _mucode(u):
"""Sad but true: munin ne fait pas d'utf-8 …""" """
Renvoie le bytestr associé à un unicode, avec l'encodage de munin.
Sad but true: munin ne fait pas d'utf-8 …"""
return u.encode('iso-8859-15', errors='ignore') return u.encode('iso-8859-15', errors='ignore')
class WhosThere(object): class WhosThere(object):
@ -91,11 +99,11 @@ class WhosThere(object):
if m.nom() in self.expected: if m.nom() in self.expected:
return return
proprio = m.proprietaire() proprio = m.proprietaire()
if fm['machineCrans'] or fm["borneWifi"] or (proprio.idn == 'cid' and int(proprio.id()) == CLUB_CRANS): if isinstance(proprio, AssociationCrans) or proprio.dn.startswith(DN_CLUB_CRANS):
key = 'crans' key = 'crans'
elif hasattr(proprio, 'droits') and proprio.droits(): elif hasattr(proprio, 'droits') and proprio.droits():
key = 'ma' key = 'ma'
elif proprio.idn == "cid" and int(proprio.id()) == CLUB_BDE: elif proprio.dn.startswith(DN_CLUB_BDE):
key = 'bde' key = 'bde'
else: else:
if self._ignore_inactive: if self._ignore_inactive:
@ -118,7 +126,8 @@ class WhosThere(object):
def populate_from_ap(self, host): def populate_from_ap(self, host):
"""Rempli les macs à partir de la prise d'un switch""" """Rempli les macs à partir de la prise d'un switch"""
path = os.path.join('/usr/scripts/var/wifi_xml/alone/', host) + '.wifi.crans.org.xml'
path = os.path.join(WIFIMAP_DIR, 'alone', host + '.xml')
with open(path, 'r') as f: with open(path, 'r') as f:
doc = xml.dom.minidom.parse(f) doc = xml.dom.minidom.parse(f)
@ -177,7 +186,11 @@ graph_category environnement""" % _mucode(munin_title)
for (name, (descr, color)) in STATE_DESCR.iteritems(): for (name, (descr, color)) in STATE_DESCR.iteritems():
print """%(name)s.label %(descr)s print """%(name)s.label %(descr)s
%(name)s.draw AREASTACK %(name)s.draw AREASTACK
%(name)s.colour %(color)06X""" % {'name': name, 'descr': _mucode(descr), 'color': color} %(name)s.colour %(color)06X""" % {
'name': name,
'descr': _mucode(descr),
'color': color,
}
# Dans le doute, n'affichons pas les adhérents # Dans le doute, n'affichons pas les adhérents
print "adh.graph no" print "adh.graph no"
@ -185,18 +198,37 @@ graph_category environnement""" % _mucode(munin_title)
res = self.query() res = self.query()
for name in STATE_DESCR.iterkeys(): for name in STATE_DESCR.iterkeys():
print """%(name)s.value %(value)d\n""" % \ print """%(name)s.value %(value)d\n""" % \
{'name': name, 'value': len(res[name]) } {'name': name, 'value': len(res[name])}
class WhoKfet(WhosThere): class WhoKfet(WhosThere):
name = u"Kfet" name = u"Kfet"
expected = [
'kronos.wifi.crans.org',
'oison.crans.org',
'batk-0.crans.org',
'camera1.crans.org',
'camera2.crans.org',
'camera3.crans.org',
'camera4.crans.org',
'kfet.crans.org',
'impression-bureau.crans.org',
]
def do_scan(self): def do_scan(self):
self.populate_from_switch('backbone.adm.crans.org', 21) self.populate_from_switch('backbone.adm.crans.org', 21)
class Who2B(WhosThere): class Who2B(WhosThere):
name = u"2B" name = u"2B"
expected = ['00:07:cb:b1:99:4e'] # Freebox expected = [
'00:07:cb:b1:99:4e', # Freebox
'terminal.crans.org',
'minigiga.adm.crans.org',
'belides.wifi.crans.org',
'tinybrother.adm.crans.org',
'vo.crans.org',
]
def do_scan(self): def do_scan(self):
# Tous les gens au 2B sont supposés actifs (local technique quoi) # Tous les gens au 2B sont supposés actifs (local technique quoi)
@ -210,7 +242,7 @@ class WhoDAlembert(WhosThere):
expected = ['danae.wifi.crans.org'] expected = ['danae.wifi.crans.org']
def do_scan(self): def do_scan(self):
self.populate_from_ap('danae') self.populate_from_ap('danae.wifi.crans.org')
class Who4J(WhosThere): class Who4J(WhosThere):
name = u"4J" name = u"4J"