Support for cellules

This commit is contained in:
Frédéric Péters 2009-11-03 11:55:44 +01:00
parent bfaec89d70
commit 719d17be96
2 changed files with 36 additions and 16 deletions

View File

@ -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)

View File

@ -20,7 +20,8 @@
<tal:main-macro metal:define-macro="main"
tal:define="kssClassesView context/@@kss_field_decorator_view;
getKssClasses nocall:kssClassesView/getKssClassesInlineEditable;
service python:context.REQUEST.get('service')">
service python:context.REQUEST.get('service');
cellule python:context.REQUEST.get('cellule');">
<div tal:replace="structure provider:plone.abovecontenttitle" />
<h1 metal:use-macro="here/kss_generic_macros/macros/generic_title_view">
@ -53,7 +54,7 @@
</ul>
</div>
<div tal:condition="python: not(not(service))">
<div tal:condition="python: (service and not cellule)">
<h2 tal:content="python: service">service name</h2>
<ul>
<li tal:repeat="entry python: [context.getServiceManager(service)]">
@ -63,7 +64,7 @@
</ul>
<ul tal:repeat="cellule python: context.getCellules(service)">
<a href="xx" tal:content="cellule">cellule</a>
<a tal:attributes="href string:?service=${service}&cellule=${cellule}" tal:content="cellule">cellule</a>
</ul>
<ul>
@ -72,9 +73,27 @@
<span tal:replace="entry/sn">sn</span>
</li>
</ul>
</div>
<div tal:condition="python: (service and cellule)">
<h2><span tal:content="python: service">service name</span> -
<span tal:content="python: cellule">cellule name</span></h2>
<ul>
<li tal:repeat="entry python: context.getCelluleManagers(service, cellule)">
<span tal:replace="entry/givenName">givenName</span>
<span tal:replace="entry/sn">sn</span>
</li>
</ul>
<ul>
<li tal:repeat="entry python: context.getCellulePeople(service, cellule)">
<span tal:replace="entry/givenName">givenName</span>
<span tal:replace="entry/sn">sn</span>
</li>
</ul>
</div>
<div tal:replace="structure provider:plone.belowcontentbody" />
</tal:main-macro>
</metal:main>