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 service name
-
service name - - cellule name+service name + - + cellule name |