diff --git a/PcfAnnuaire.py b/PcfAnnuaire.py index 99b802d..aba050e 100644 --- a/PcfAnnuaire.py +++ b/PcfAnnuaire.py @@ -39,6 +39,10 @@ class PcfAnnuaireEntry: self.title = get_attr('title') self.company = get_attr('company') +class PcfAnnuaireService: + pass + + class PcfAnnuaire(BaseContent): implements(IPcfAnnuaire) @@ -62,12 +66,35 @@ class PcfAnnuaire(BaseContent): users_base = luf.users_base return users_base - def getEntries(self): + def getObjectEntries(self): ldap_conn = self.get_ldap_conn() result = ldap_conn.search_s(self.get_users_base(), ldap.SCOPE_SUBTREE, 'objectClass=person') return [PcfAnnuaireEntry(x[1]) for x in result] + def getEntries(self): + return [x for x in self.getObjectEntries() if x.givenName] + + def getServices(self): + entries = self.getObjectEntries() + services = {} + for entry in entries: + if not entry.division: + continue + if not entry.division in services: + service = Service() + service.name = entry.division + service.agents = [] + services[division] = service + service = services.get(entry.division) + service.agents.append(entry) + def get_name(x): return getattr(x, 'name') + def get_sn(x): return getattr(x, 'sn') + services = sorted([x for x in services.values()], key=get_name) + for service in services: + services.agents.sort(key=get_sn) + return services + def getEntriesWithPhone(self): def get_sn(x): return getattr(x, 'sn') return sorted([x for x in self.getEntries() if x.telephoneNumbers], key=get_sn)