[attributs, objets] Une fonction pour générer automatiquement une ligne d'historique

Elle s'appelle history_gen.
Il faut l'appeler explicitement pour le moment, pour éviter de mettre des lignes
en double vu que jusqu'à maintenant, historique était fait à la main.

Il y a 4 niveaux d'historique pour les attributs :
  * full on loggue toutes les modifications
      pour un singlevalue : nom (Durant -> Dupond")
      pour les autres : mailAlias+toto@free.fr-titi@orange.com
  * partial, comme full sauf qu'on limite la longeur de chaque valeur d'attribut
    à au plus 15 caractères
  * info, on signalute juste que l'attribut attribut a été créer, supprimer ou modifier:
  * None, on n'ajoute pas de ligne (par exemple pour l'historique lui même, on le loggue pas
     ses modifications)

Ajoutez en d'autre si vous pensez à des trucs cools
This commit is contained in:
Valentin Samir 2014-11-22 12:54:14 +01:00
parent f6fe2f78e5
commit 8477760302
2 changed files with 92 additions and 1 deletions

View file

@ -256,6 +256,7 @@ class Attr(object):
conn = None
unique = False
concurrent = True
historique = "full" # valeurs possibles "full", "partial", "info", None
unique_exclue = []
#: Le nom de l'attribut dans le schéma LDAP
ldap_name = None
@ -1022,6 +1023,7 @@ class ipsec(Attr):
category = 'wifi'
ldap_name = "ipsec"
can_modify = [nounou, parent]
historique = "info"
default = u'auto'
def parse_value(self, val):
@ -1313,6 +1315,7 @@ class historique(Attr):
ldap_name = "historique"
# Il faudrait faire quelque chose pour que soi, parent, cableur ne puissent que ajouter de nouvelles lignes
can_modify = [nounou, soi, parent, cableur]
historique = None
# Thanks to 20-100, on va devoir gérer deux cas
FORMAT = "%d/%m/%Y %H:%M:%S"
@ -1334,6 +1337,7 @@ class info(Attr):
category = 'info'
can_modify = [nounou, cableur, bureau]
ldap_name = "info"
historique = "info"
@crans_attribute
class homepageAlias(Attr):
@ -1427,6 +1431,7 @@ class userPassword(Attr):
category = ''
ldap_name = "userPassword"
can_modify = [nounou, bureau, cableur]
historique = "info"
def is_modifiable(self, liste_droits):
"""
@ -1452,6 +1457,7 @@ class sshFingerprint(Attr):
can_modify = [parent, nounou]
ldap_name = "sshFingerprint"
python_type = dict
historique = "partial"
def parse_value(self, key):
if isinstance(key, self.python_type):
@ -1692,6 +1698,7 @@ class privatekey(Attr):
python_type = str
can_modify = [parent, nounou]
legend = "Clef privée"
historique = "info"
@crans_attribute
class csr(Attr):
@ -1699,6 +1706,7 @@ class csr(Attr):
python_type = str
can_modify = [parent, nounou]
legend = "requête de signature de certificat"
historique = "info"
def _format_cert(self, csr):
import OpenSSL
@ -1728,6 +1736,7 @@ class certificat(Attr):
python_type = str
can_modify = [parent, nounou]
legend = "Certificat"
historique = "info"
def __init__(self, *args, **kwargs):
super(certificat, self).__init__(*args, **kwargs)