[gestion/whos.py] Ajout d'une limite d'affichage sur les blacklistes

Parce que bon, avec les deconnexions pour bittorrent toutes les n heures ...

darcs-hash:20100219133916-ddb99-d306b562bfb0aa0b8febb6eb63a5c67951b47f51.gz
This commit is contained in:
Michel Blockelet 2010-02-19 14:39:16 +01:00
parent 5329f5a1e7
commit ab4630dd33

View file

@ -35,6 +35,8 @@ Les options de recherches sont :
le mode d'affichage condensé au lieu du mode détaillé (défaut %(limit_aff_details)i)
-L <num> ou --limit-historique=<num> : limitation du nombre de lignes
d'historique affichées (défaut %(limit_aff_historique)i)
-d <num> ou --limit-blacklist=<num> : limitation du nombre de lignes
d'historique des déconnexions affichées (défaut %(limit_aff_blacklist)i)
"""
try:
@ -59,6 +61,7 @@ import popen2, commands
limit_aff_details = 1
limit_aff_machines = 15
limit_aff_historique = 4
limit_aff_blacklist = 4
aff_ipsec = 0
################################################################################
@ -807,8 +810,14 @@ def club_details(club) :
def _blacklist(clas):
""" Formatage blackliste de la classe fournie """
if limit_aff_blacklist == 0: return ''
f = u''
for event in clas.blacklist():
bl = clas.blacklist()
bl.reverse()
nb = 0
for event in bl:
nb += 1
if nb > limit_aff_blacklist: break
if is_actif(event):
# Colorisation si sanction en cours
c = 'rouge'
@ -823,7 +832,10 @@ def _blacklist(clas):
dates += strftime('%d/%m/%Y %H:%M', localtime(int(event[1])))
f += u"%s\n\t " % coul(u'%s : %s [%s]' % (dates, event[2], event[3]), c)
f = f[:-6] # supression des espaces superflus
f = f[:-6] # suppression des espaces superflus
if len(bl) > limit_aff_blacklist:
f += ' [...]\n'
if f:
return coul(u'Blackliste : ', 'gras') + f
@ -1051,14 +1063,15 @@ def __usage() :
cprint(__doc__ % { 'prog': sys.argv[0].split('/')[-1].split('.')[0],
'champs_rech': '\n'.join(liste),
'limit_aff_details': limit_aff_details,
'limit_aff_historique': limit_aff_historique })
'limit_aff_historique': limit_aff_historique,
'limit_aff_blacklist': limit_aff_blacklist })
sys.exit(0)
def __recherche() :
"""
Recherche et affichage des résultats à partir des options founies (sys.argv)
"""
global aff_ipsec, limit_aff_details, limit_aff_historique, debug
global aff_ipsec, limit_aff_details, limit_aff_historique, limit_aff_blacklist, debug
# Récupération des options
if len(sys.argv) == 1 :
@ -1066,7 +1079,7 @@ def __recherche() :
__usage_brief()
try :
options, arg = getopt.getopt(sys.argv[1:], 'hamctbil:L:', [ 'debug', 'help', 'adherent', 'machine', 'club' , 'tech', 'bornes', 'limit=', 'limit-historique=', 'ipsec', 'crans' ])
options, arg = getopt.getopt(sys.argv[1:], 'hamctbil:L:d:', [ 'debug', 'help', 'adherent', 'machine', 'club' , 'tech', 'bornes', 'limit=', 'limit-historique=', 'limit-blacklist=', 'ipsec', 'crans' ])
except getopt.error, msg :
__usage_brief(unicode(msg))
@ -1089,12 +1102,17 @@ def __recherche() :
# Passage mode condensé, mode détaillé
try : limit_aff_details = int(val)
except :
__usage_brief(u'Valeur du paramètre %s incorecte (doit être un entier positif)' % opt)
__usage_brief(u'Valeur du paramètre %s incorrect (doit être un entier positif)' % opt)
elif opt == '-L' or opt =='--limit-historique':
# Limitation du nombre de lignes d'historique
try : limit_aff_historique = int(val)
except :
__usage_brief(u'Valeur du paramètre %s incorecte (doit être un entier positif)' % opt)
__usage_brief(u'Valeur du paramètre %s incorrect (doit être un entier positif)' % opt)
elif opt == '-d' or opt =='--limit-blacklist':
# Limitation du nombre de lignes d'historique
try : limit_aff_blacklist = int(val)
except :
__usage_brief(u'Valeur du paramètre %s incorrect (doit être un entier positif)' % opt)
elif opt in [ '-a', '--adherent' ] :
only_adh = 1
cprint(u"Affichage limité aux adhérents.")