diff --git a/gestion/whos.py b/gestion/whos.py index 907d3b59..bcab7d82 100644 --- a/gestion/whos.py +++ b/gestion/whos.py @@ -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 ou --limit-historique= : limitation du nombre de lignes d'historique affichées (défaut %(limit_aff_historique)i) + -d ou --limit-blacklist= : 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.")