add commission view

This commit is contained in:
Frédéric Péters 2011-10-31 15:14:05 +01:00
parent ffe8801413
commit 224fad97e6
3 changed files with 137 additions and 0 deletions

View File

@ -0,0 +1,83 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"
xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:i18n="http://xml.zope.org/namespaces/i18n"
lang="fr"
metal:use-macro="context/main_template/macros/master"
i18n:domain="tabellio.pfbviews">
<body>
<metal:main fill-slot="main">
<tal:main-macro metal:define-macro="main">
<div tal:replace="structure provider:plone.abovecontenttitle" />
<h1>Les commissions</h1>
<div tal:replace="structure provider:plone.belowcontenttitle" />
<div tal:replace="structure provider:plone.abovecontentbody" />
<h2 metal:use-macro="context/kss_generic_macros/macros/generic_title_view">Title</h2>
<h3>Président(e)</h3>
<div class="commission-people-group" tal:repeat="polgroup view/presidence_polgroups">
<span tal:attributes="class string:polgroup polgroup-${polgroup/getId}"
tal:content="polgroup/Title"/>
<ul>
<li tal:repeat="member python: view.presidence_members(polgroup)"><a
tal:attributes="href member/absolute_url"
tal:content="member/Title">member</a></li>
</ul>
</div>
<div tal:condition="context/vicepresidents">
<h3>Vice Président(e)s</h3>
<div class="commission-people-group" tal:repeat="polgroup view/vicepresidence_polgroups">
<span tal:attributes="class string:polgroup polgroup-${polgroup/getId}"
tal:content="polgroup/Title"/>
<ul>
<li tal:repeat="member python: view.vicepresidence_members(polgroup)"><a
tal:attributes="href member/absolute_url"
tal:content="member/Title">member</a></li>
</ul>
</div>
</div>
<div tal:condition="context/members">
<h3>Membres effectifs/ves</h3>
<div class="commission-people-group" tal:repeat="polgroup view/members_polgroups">
<span tal:attributes="class string:polgroup polgroup-${polgroup/getId}"
tal:content="polgroup/Title"/>
<ul>
<li tal:repeat="member python: view.members_members(polgroup)"><a
tal:attributes="href member/absolute_url"
tal:content="member/Title">member</a></li>
</ul>
</div>
</div>
<div tal:condition="context/substitutes">
<h3>Membres suppléant(e)s</h3>
<div class="commission-people-group" tal:repeat="polgroup view/substitutes_polgroups">
<span tal:attributes="class string:polgroup polgroup-${polgroup/getId}"
tal:content="polgroup/Title"/>
<ul>
<li tal:repeat="member python: view.substitutes_members(polgroup)"><a
tal:attributes="href member/absolute_url"
tal:content="member/Title">member</a></li>
</ul>
</div>
</div>
<div tal:replace="structure provider:plone.belowcontentbody" />
</tal:main-macro>
</metal:main>
</body>
</html>

View File

@ -0,0 +1,46 @@
# -*- coding: utf-8 -*-
from Products.Five import BrowserView
class View(BrowserView):
def presidence_polgroups(self):
return [self.context.president.to_object.polgroup.to_object]
def presidence_members(self, polgroup):
return [self.context.president.to_object]
def list_polgroups(self, list):
d = {}
polgroups = {}
for member in list:
polgroup = member.to_object.polgroup.to_object
polgroup_id = polgroup.id
polgroups[polgroup.id] = polgroup
if not polgroup_id in d:
d[polgroup_id] = 0
d[polgroup_id] = d[polgroup_id] + 1
items = d.items()
items.sort(lambda x,y: cmp(x[1], y[1]))
items.reverse()
return [polgroups.get(x[0]) for x in items]
def vicepresidence_polgroups(self):
return self.list_polgroups(self.context.vicepresidents)
def vicepresidence_members(self, polgroup):
return [x.to_object for x in self.context.vicepresidents
if x.to_object.polgroup.to_object == polgroup]
def members_polgroups(self):
return self.list_polgroups(self.context.members)
def members_members(self, polgroup):
return [x.to_object for x in self.context.members
if x.to_object.polgroup.to_object == polgroup]
def substitutes_polgroups(self):
return self.list_polgroups(self.context.substitutes)
def substitutes_members(self, polgroup):
return [x.to_object for x in self.context.substitutes
if x.to_object.polgroup.to_object == polgroup]

View File

@ -17,4 +17,12 @@
permission="zope2.View"
/>
<browser:page
for="themis.datatypes.commission.ICommission"
name="view"
class=".commission.View"
template="commission.pt"
permission="zope2.View"
/>
</configure>