diff --git a/PcfAnnuaire.py b/PcfAnnuaire.py index 6e97dd1..f93d4d7 100644 --- a/PcfAnnuaire.py +++ b/PcfAnnuaire.py @@ -30,6 +30,7 @@ class PcfAnnuaireEntry: self.directory = directory self._debug_entry = ldap_entry self.debug_entry = ldap_entry + self.ldap_entry = ldap_entry self.dn = ldap_dn self.cn = get_attr('cn') self.sn = get_attr('sn') @@ -66,13 +67,26 @@ class PcfAnnuaireEntry: self.manager_url = urllib.quote(self.manager) self.manager_name = self.manager.split('=')[1].split(',')[0] + def all_managers(self): + service_managers = [] + if self.manager: + manager = self.directory.getPerson(self.manager) + service_managers = self.directory.getServiceManager(self.service) + if self.manager in [x.dn for x in service_managers]: + return [manager] + [x for x in service_managers if x.dn != self.manager] + else: + return [manager] + + def all_manager_couples(self): + return [(urllib.quote(x.dn), x.cn) for x in self.all_managers()] + def __str__(self): return urllib.quote(self.dn) def has_a_chief(self): if not self.manager: return False - if self.service == 'Service du Greffier': + if self.service in ('Service du Greffier', 'Secrétariat général'): return True sec_gen = self.directory.getSecretaireGeneral() if self.manager == sec_gen.dn: @@ -162,22 +176,22 @@ class PcfAnnuaire(BaseContent): def getServiceManager(self, service): sec_gen = self.getSecretaireGeneral() - if service == 'Service du Greffier': - return sec_gen + if service in ('Service du Greffier', 'Secrétariat général'): + return [sec_gen] try: - return [x for x in self.getEntries() if x.service == service and x.manager == sec_gen.dn][0] + return [x for x in self.getEntries() if x.service == service and x.manager == sec_gen.dn] except IndexError: return None def getServiceNonManagers(self, service): - service_manager = self.getServiceManager(service) + service_managers_dn = [x.dn for x in self.getServiceManager(service)] entries = [x for x in self.getEntries() if \ - x.service == service and x.manager == service_manager.dn and x.division in (None, ' ')] + x.service == service and x.manager in service_managers_dn and x.division in (None, ' ')] return sorted(entries, key=get_sort_key) def getCellules(self, service): - service_manager = self.getServiceManager(service) - entries = [x for x in self.getEntries() if x.manager == service_manager.dn] + service_managers_dn = [x.dn for x in self.getServiceManager(service)] + entries = [x for x in self.getEntries() if x.manager in service_managers_dn] cells = {} for entry in entries: if entry.division and entry.division != ' ': @@ -186,9 +200,11 @@ class PcfAnnuaire(BaseContent): return cells def getCelluleManagers(self, service, cellule): - service_manager = self.getServiceManager(service) + if cellule == 'Secrétariat général': + return [self.getSecretaireGeneral()] + service_managers_dn = [x.dn for x in self.getServiceManager(service)] entries = [x for x in self.getEntries() if \ - x.service == service and x.division == cellule and x.manager == service_manager.dn] + x.service == service and x.division == cellule and x.manager in service_managers_dn] return sorted(entries, key=get_sort_key) def getCellulePeople(self, service, cellule): diff --git a/skins/pcfannuaire/pcfannuaire_phones.pt b/skins/pcfannuaire/pcfannuaire_phones.pt index a8d0651..a2ab8bd 100644 --- a/skins/pcfannuaire/pcfannuaire_phones.pt +++ b/skins/pcfannuaire/pcfannuaire_phones.pt @@ -38,7 +38,9 @@
+ displayName + 000 diff --git a/skins/pcfannuaire/pcfannuaire_photos.pt b/skins/pcfannuaire/pcfannuaire_photos.pt index 1aadc21..d0acaf9 100644 --- a/skins/pcfannuaire/pcfannuaire_photos.pt +++ b/skins/pcfannuaire/pcfannuaire_photos.pt @@ -38,8 +38,8 @@
- - displayName + +
displayName
diff --git a/skins/pcfannuaire/pcfannuaire_view.pt b/skins/pcfannuaire/pcfannuaire_view.pt index 8825913..2303a16 100644 --- a/skins/pcfannuaire/pcfannuaire_view.pt +++ b/skins/pcfannuaire/pcfannuaire_view.pt @@ -59,7 +59,7 @@

service name

-

service name - - cellule name

+

service name + - + cellule name