From 5107a71ebe7d8588ce654ae4830f38174979efe7 Mon Sep 17 00:00:00 2001 From: Valentin Samir Date: Tue, 25 Oct 2011 22:28:04 +0200 Subject: [PATCH 1/2] =?UTF-8?q?On=20optimise=20la=20methode=20allMachines?= =?UTF-8?q?=20:=20il=20est=20inutile=20losque=20l'on=20construit=20les=20p?= =?UTF-8?q?ropri=C3=A9taires=20des=20machines=20de=20r=C3=A9int=C3=A9rroge?= =?UTF-8?q?r=20l'annuaire=20=20ldap=20pour=20les=20obtenir=20alors=20que?= =?UTF-8?q?=20l'on=20vient=20de=20dumper=20tout=20l'annuaire.=20Pour=20cel?= =?UTF-8?q?a,=20on=20rajoute=20un=20param=C3=A8tre=20optionel=20machines?= =?UTF-8?q?=20=C3=A0=20la=20classe=20proprio,=20et=20on=20construit=20dire?= =?UTF-8?q?ctement=20les=20propri=C3=A9taires=20en=20appelant=20la=20class?= =?UTF-8?q?e=20adh=C3=A9rant=20au=20lieu=20de=20passer=20par=20la=20method?= =?UTF-8?q?e=20new=5Fcransldapobject.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lc_ldap.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lc_ldap.py b/lc_ldap.py index 0065c91..b37e49e 100644 --- a/lc_ldap.py +++ b/lc_ldap.py @@ -130,14 +130,19 @@ class lc_ldap(ldap.ldapobject.LDAPObject): machines = [] # On récupère tous les objets ldap et on les met dans un dico # (proxying de la base ldap) - for dn, attrs in self.search_s(base_dn, scope=2): - res[dn] = attrs + for dn, attrs in self.search_s(base_dn, scope=2): #on fait tout dans une seule boucle + #~ res[dn] = attrs # On crée la liste des machines - for dn, attrs in res.items(): + #~ for dn, attrs in res.items(): if dn.startswith('mid='): m = new_cransldapobject(self, dn, ldif = attrs) parent_dn = dn.split(',', 1)[1] - m._proprio = new_cransldapobject(self, parent_dn, res[parent_dn]) + if not parent.has_key(parent_dn): + parent[parent_dn]=adherent(self, dn,machines= [ new_cransldapobject(self, dn,ldif=attrs)]) # on utilise pas new_cransldapobject pour optimiser les appel ldap (on passe la liste des machines) + else: + parent[parent_dn]._machines.append(new_cransldapobject(self, dn,ldif=attrs)) + #~ m._proprio = new_cransldapobject(self, parent_dn, res[parent_dn],opt=machine_proprio[parent_dn]) + m._proprio = parent[parent_dn] machines.append(m) return machines @@ -415,9 +420,9 @@ class proprio(CransLdapObject): ofields = [] xfields = [] - def __init__(self, conn, dn, mode='ro', ldif = None): + def __init__(self, conn, dn, mode='ro', ldif = None, machines=[]): super(proprio, self).__init__(conn, dn, mode, ldif) - self._machines = [] + self._machines = machines def machines(self): if not self._machines: From cd4b2c92e73e2284ca7f3b2c33ff6645e4d01b30 Mon Sep 17 00:00:00 2001 From: Valentin Samir Date: Tue, 25 Oct 2011 23:19:11 +0200 Subject: [PATCH 2/2] =?UTF-8?q?[lc=5Fldap.py]=20On=20optimise=20la=20metho?= =?UTF-8?q?de=20allMachines=20en=20pensant=20a=20initialiser=20une=20varia?= =?UTF-8?q?ble=20:=20il=20est=20inutile=20losque=20l'on=20construit=20les?= =?UTF-8?q?=20propri=C3=A9taires=20des=20machines=20de=20r=C3=A9int=C3=A9r?= =?UTF-8?q?roger=20l'annuaire=20=20ldap=20pour=20les=20obtenir=20alors=20q?= =?UTF-8?q?ue=20l'on=20vient=20de=20dumper=20tout=20l'annuaire.=20Pour=20c?= =?UTF-8?q?ela,=20on=20rajoute=20un=20param=C3=A8tre=20optionel=20machines?= =?UTF-8?q?=20=C3=A0=20la=20classe=20proprio,=20et=20on=20construit=20dire?= =?UTF-8?q?ctement=20les=20propri=C3=A9taires=20en=20appelant=20la=20class?= =?UTF-8?q?e=20adh=C3=A9rant=20au=20lieu=20de=20passer=20par=20la=20method?= =?UTF-8?q?e=20new=5Fcransldapobject.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lc_ldap.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lc_ldap.py b/lc_ldap.py index b37e49e..7300baf 100644 --- a/lc_ldap.py +++ b/lc_ldap.py @@ -127,6 +127,7 @@ class lc_ldap(ldap.ldapobject.LDAPObject): toute la base, c'est pour pouvoir aussi rajouter à moindre coût les propriétaires.""" res = {} + parent = {} machines = [] # On récupère tous les objets ldap et on les met dans un dico # (proxying de la base ldap)