diff --git a/printing/templates/templates.py b/printing/templates/templates.py index 2589717..64a6268 100644 --- a/printing/templates/templates.py +++ b/printing/templates/templates.py @@ -12,6 +12,7 @@ import gestion.config as config # script continue à fonctionner. import gestion import gestion.annuaires_pg +import gestion.hptools2 as hptools2 import lc_ldap.attributs as attributs @@ -34,15 +35,62 @@ def try_import(lib): def prise_etat(chbre): -# Ici, on utilise le module gestion importé -# Il faudrait remplacer cet import là par une -# fonction prise_etat propre à lc_ldap, pour -# ne plus en avoir besoin ci-après. - gestion.whos = try_import(u"gestion.whos") - gestion.whos.style = style - if chbre=="????": - return style("Chambre invalide", "violet") - return gestion.whos.prise_etat(chbre)[0] + """Récupère l'état d'une prise""" + bat = chbre[0].lower() + chbre = chbre[1:] + prise = gestion.annuaires_pg.chbre_prises(batiment=bat, chambre=chbre) + + swid, port = int(prise[0]), int(prise[1:]) + switch_name = "bat%s-%s.adm.crans.org" % (bat, swid) + + # Si le switch est virtuel, on évite de perdre du temps à query + # ledit switch qui a une forte proba d'être down. + if bat in config.bats_virtuels: + cablage = style(u"Câblée au Crans", "bleu") + lien = style(u"Prise %s%s virtuelle" % (bat, prise), "violet") + return u", ".join([lien, cablage]) + + switch = hptools2.HPSwitch(switch_name) + vlan_list = switch.get_vlans(port) + + vlans = u" " * (13 + len(chbre)) + vlans += u"Vlan%s : " % (u's' if len(vlan_list) > 1 else u"",) + style(u", ".join([unicode(vlan) for vlan in vlan_list]), "orange") + + cablage = u" " * (13 + len(chbre)) + + if gestion.annuaires_pg.is_crans(bat, chbre): + cablage += style(u"Câblée au Crans", "bleu") + else: + cablage += style(u"Câblée au CROUS", "jaune") + + if not gestion.annuaires_pg.is_connected(bat, chbre): + cablage += style(u" [à valider]", "rouge") + + lien = u"Prise %s" % (switch.ports[port].name(),) + + if not switch.is_enabled(port) == 'up': + lien += u", " + style(u'désactivée', 'rouge') + else: + lien += u", " + style(u'activée', 'cyan') + if not switch.is_up(port) == 'up': + lien += u", " + style(u'aucune machine détectée', 'jaune') + else: + lien += u", " + style(u'lien actif', 'vert') + macs = [] + compteur = 0 + for mac in switch.show_port_macs(port)[0]: + # Toutes les 3 macs, on met un retour à la ligne pour plus de + # clarté. + if compteur % 3 == 0 and compteur > 0: + mac = u'\n' + u' ' * (13 + len(chbre)) + u'MACs: %s' % (mac,) + macs.append(mac) + compteur += 1 + lien += u"," + style(u'\n%sMACs: %s' % (u" " * (13 + len(chbre)), u",".join(macs)), 'violet') + extra_info = gestion.annuaires_pg.chbre_commentaire(bat, chbre).decode('utf-8') + if extra_info: + lien += u"\nNote : %s" % (extra_info,) + + return u",\n".join([lien, vlans, cablage]) def timeformat(t, format): if isinstance(t, attributs.Attr):