[lc_ldap] On n'affiche que les données pertinentes de l'historique

This commit is contained in:
Olivier Iffrig 2010-10-18 18:50:57 +02:00
parent e239973d60
commit db0e6c6092

View file

@ -44,6 +44,9 @@ uri = 'ldapi:///' #'ldap://ldap.adm.crans.org/'
base_dn = 'ou=data,dc=crans,dc=org'
log_dn = "cn=log"
# Champs à ignorer dans l'historique
HIST_IGNORE_FIELDS = ["modifiersName", "entryCSN", "modifyTimestamp"]
def is_actif(sanction):
"""Retourne True ou False suivant si la sanction fournie (chaîne
venant de blacklist) est active ou non.
@ -417,16 +420,35 @@ class CransLdapObject(object):
return histo
def search_historique(self):
def search_historique(self, ign_fields=HIST_IGNORE_FIELDS):
u"""Récupère l'historique
l'argument optionnel ign_fields contient la liste des champs
à ignorer, HIST_IGNORE_FIELDS par défaut
Renvoie une liste de lignes de texte."""
res = self.conn.search_s(log_dn, 2, 'reqDN=%s' % self.dn)
res.sort((lambda a, b: cmp(a[1]['reqEnd'][0], b[1]['reqEnd'][0])))
res.sort(key=(lambda a: a[1]['reqEnd'][0]))
out = []
for cn, attrs in res:
date = crans_utils.format_ldap_time(attrs['reqEnd'][0])
if attrs['reqType'][0] == 'delete':
print "%s : %s deleted %s" % (date, attrs['reqAuthzID'][0], attrs['reqDN'][0])
out.append("%s : [%s] Suppression" % (date, attrs['reqAuthzID'][0]))
elif attrs['reqType'][0] == 'modify':
print "%s : %s modified %s (%s)" % (date, attrs['reqAuthzID'][0], attrs['reqDN'][0],
"/".join(attrs['reqMod']))
fields = {}
for mod in attrs['reqMod']:
field, change = mod.split(':', 1)
if field not in ign_fields:
if field in fields:
fields[field].append(change)
else:
fields[field] = [change]
mod_list = []
for field in fields:
mods = fields[field]
mod_list.append("%s %s" %(field, ", ".join(mods)))
if mod_list != []:
out.append("%s : [%s] %s" % (date, attrs['reqAuthzID'][0], " ; ".join(mod_list)))
return out
def blacklist_actif(self):
u"""Vérifie si l'instance courante est blacklistée.