handle new organigram (#4489)

This commit is contained in:
Frédéric Péters 2014-03-17 19:09:38 +01:00
parent 87cc32ab44
commit 2516104af1
4 changed files with 40 additions and 16 deletions

View File

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

View File

@ -38,7 +38,9 @@
<table id="phone-numbers">
<tr tal:repeat="entry python: context.getEntriesWithPhone()">
<td>
<a tal:attributes="href string:?person=${entry}">
<span tal:replace="entry/displayName">displayName</span>
</a>
</td>
<td class="col-phone">
<span tal:replace="entry/shortTelephoneNumber">000</span>

View File

@ -38,8 +38,8 @@
<div id="photos">
<div tal:repeat="entry python: context.getEntries()" class="photo">
<a tal:attributes="href string:?person=${entry}">
<img tal:attributes="src string:/intranet/static/photos/${entry/samaccountname}.jpg" width="130" height="117" />
<span><span tal:replace="entry/displayName">displayName</span></span></a>
<img tal:attributes="src string:/intranet/static/photos/${entry/samaccountname}.jpg" width="100" height="117" />
<span><br><span tal:replace="entry/displayName">displayName</span></span></a>
</div>
</div>

View File

@ -59,7 +59,7 @@
<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)]">
<li tal:repeat="entry python: context.getServiceManager(service)">
<a tal:attributes="href string:?person=${entry}">
<span tal:replace="entry/displayName">displayName</span>
</a>
@ -85,8 +85,9 @@
</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>
<h2><span tal:content="python: service">service name</span>
<span tal:condition="python: service != cellule"> -
<span tal:content="python: cellule">cellule name</span></span></h2>
<ul>
<li tal:repeat="entry python: context.getCelluleManagers(service, cellule)">
<a tal:attributes="href string:?person=${entry}">
@ -135,7 +136,12 @@ img.photo {
<li tal:condition="entry/email">Courriel : <a tal:attributes="href string:mailto:${entry/email}" tal:content="entry/email"></a></li>
<li tal:condition="entry/service">Service : <a tal:attributes="href string:?service=${entry/service}"><span tal:replace="entry/service"></span></a></li>
<li tal:condition="entry/division">Cellule : <a tal:attributes="href string:?service=${entry/service}&cellule=${entry/division}"><span tal:replace="entry/division"></span></a></li>
<li tal:condition="entry/has_a_chief">Responsable : <a tal:attributes="href string:?person=${entry/manager_url}" tal:content="entry/manager_name"></a></li>
<li tal:condition="entry/has_a_chief">Responsable(s) :
<span tal:repeat="manager_couple entry/all_manager_couples">
<a tal:attributes="href python: '?person=' + manager_couple[0]" tal:content="python: manager_couple[1]">plop</a>
<span tal:condition="not: repeat/manager_couple/end">, </span>
</span>
</li>
</ul>
</div>
</div>