From 719d17be9693ab3f9dc92aec795fc93248a28081 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Tue, 3 Nov 2009 11:55:44 +0100 Subject: [PATCH] Support for cellules --- PcfAnnuaire.py | 25 +++++++++++++------------ skins/pcfannuaire/pcfannuaire_view.pt | 27 +++++++++++++++++++++++---- 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/PcfAnnuaire.py b/PcfAnnuaire.py index 297adaf..3f2bca9 100644 --- a/PcfAnnuaire.py +++ b/PcfAnnuaire.py @@ -66,7 +66,7 @@ class PcfAnnuaire(BaseContent): ldapdir = aq_base(portal.acl_users.ldap) luf = ldapdir._getLDAPUserFolder() server = luf._delegate.getServers()[0] - ldap_conn = ldap.initialize('%(protocol)s://%(host)s:%(port)s' % server) + ldap_conn = ldap.initialize('%(protocol)s://%(host)s' % server) ldap_conn.simple_bind_s(luf._binduid, luf._bindpwd) return ldap_conn @@ -74,7 +74,7 @@ class PcfAnnuaire(BaseContent): portal = getToolByName(self, 'portal_url').getPortalObject() ldapdir = aq_base(portal.acl_users.ldap) luf = ldapdir._getLDAPUserFolder() - users_base = luf.users_base + users_base = 'OU=ouPCF,' + luf.users_base return users_base def getObjectEntries(self): @@ -137,7 +137,7 @@ class PcfAnnuaire(BaseContent): def getServiceNonManagers(self, service): service_manager = self.getServiceManager(service) entries = [x for x in self.getEntries() if \ - x.service == service and x.manager == service_manager.dn and not x.division] + x.service == service and x.manager == service_manager.dn and x.division in (None, ' ')] return sorted(entries, key=get_sn) def getCellules(self, service): @@ -145,20 +145,21 @@ class PcfAnnuaire(BaseContent): entries = [x for x in self.getEntries() if x.manager == service_manager.dn] cells = {} for entry in entries: - if entry.division: + if entry.division and entry.division != ' ': cells[entry.division] = True cells = sorted(cells.keys()) return cells - def getCelluleManager(self, cellule): - entries = [x for x in self.getEntries() if x.division == cellule] - dns = [x.dn for x in entries] - manager = [x for x in entries if x.manager not in dns][0] - return manager + def getCelluleManagers(self, service, cellule): + service_manager = self.getServiceManager(service) + entries = [x for x in self.getEntries() if \ + x.service == service and x.division == cellule and x.manager == service_manager.dn] + return sorted(entries, key=get_sn) - def getCellulePeople(self, cellule): - entries = [x for x in self.getEntries() if x.division == cellule] - cellule_manager = self.getCelluleManager() + def getCellulePeople(self, service, cellule): + cellule_managers = [x.dn for x in self.getCelluleManagers(service, cellule)] + entries = [x for x in self.getEntries() if \ + x.service == service and x.division == cellule and x.dn not in cellule_managers] return sorted(entries, key=get_sn) diff --git a/skins/pcfannuaire/pcfannuaire_view.pt b/skins/pcfannuaire/pcfannuaire_view.pt index 5a5c309..4a147fc 100644 --- a/skins/pcfannuaire/pcfannuaire_view.pt +++ b/skins/pcfannuaire/pcfannuaire_view.pt @@ -20,7 +20,8 @@ + service python:context.REQUEST.get('service'); + cellule python:context.REQUEST.get('cellule');">

@@ -53,7 +54,7 @@

-
+

service name

  • @@ -63,7 +64,7 @@
    @@ -72,9 +73,27 @@ sn
-
+
+

service name - + cellule name

+
    +
  • + givenName + sn +
  • +
+ +
    +
  • + givenName + sn +
  • +
+
+ +