diff --git a/gestion/chambres_vides.py b/gestion/chambres_vides.py new file mode 100755 index 00000000..ec4b2e6e --- /dev/null +++ b/gestion/chambres_vides.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +# Codé par b2moo, commenté par 20-100, cr{itiqu|on}é par Nit + +import datetime +import time +import re +import ldap_crans +conn = ldap_crans.CransLdap() + +year = 2012 #owi les dates hardcodées, c'est cool ! +delai = 8 # jours avant d'être considéré déserteur + +# On récupère ceux qui n'ont pas payé cette année +bad_boys_e_s = conn.search('chbre=????&paiement=%d&paiement!=%d' % (year-1,year))['adherent'] + +timeout = time.time() - 3600*24*delai + +template = u"| %4s | %-15s | %4s | %-38s |" + +header_printed = False +for clandestin in bad_boys_e_s: + # Look for last kickout + for l in clandestin.historique(): + # On récupère la date du dernier changement de chambre + # (l'historique est enregistré par ordre chronologique) + x = re.match("(.*),.* : chbre \(.*-> \?\?\?\?\)",l) + if x <> None: + d = x.group(1) + + # On lui accorde un délai + if timeout < time.mktime(time.strptime(d,'%d/%m/%Y %H:%M')): + continue + + for m in clandestin.machines(): + # On n'a pas envie d'essayer de supprimer une machine qui a une blackliste + if len(m.blacklist_actif()) > 0: + continue + # random formatage de chaîne de caractère + # GRUIK + if not header_printed: + print "\nListe des machines supprimée pour chambre invalide depuis plus de %s jours :\n" % delai + print "+------+-------------------+------+-----------------------------------------+" + print template % ("aid", " ip", "mid", " hostname") + print "+------+-------------------+------+-----------------------------------------+" + header_printed = True + print(template % (clandestin.id(), m.ip(), m.id(), m.nom())) + m2 = conn.search('mid=%s' % m.id(),mode='w')['machine'][0] + m2.delete('Adherent sans chambre valide depuis %d jours' % delai) + +if header_printed: + print "+------+-------------------+------+-----------------------------------------+" +