From a620d68411667cbcc8420e6e9bace2dec3319216 Mon Sep 17 00:00:00 2001 From: Valentin Samir Date: Tue, 25 Oct 2011 21:49:23 +0200 Subject: [PATCH] =?UTF-8?q?On=20optimise=20la=20methode=20allMachines=20:?= =?UTF-8?q?=20il=20est=20inutile=20losque=20l'on=20construit=20les=20propr?= =?UTF-8?q?i=C3=A9taires=20des=20machines=20de=20r=C3=A9int=C3=A9rroger=20?= =?UTF-8?q?l'annuaire=20ldap=20pour=20les=20obtenir=20alors=20que=20l'on?= =?UTF-8?q?=20vient=20de=20dumper=20tout=20l'annuaire.=20Pour=20cela,=20on?= =?UTF-8?q?=20rajoute=20un=20param=C3=A8tre=20optionel=20machines=20=C3=A0?= =?UTF-8?q?=20la=20classe=20proprio,=20et=20on=20construit=20directement?= =?UTF-8?q?=20les=20propri=C3=A9taires=20en=20appelant=20la=20classe=20adh?= =?UTF-8?q?=C3=A9rant=20au=20lieu=20de=20passer=20par=20la=20methode=20new?= =?UTF-8?q?=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: