Ну,
это может показаться немного сложным, потому что этот подход становится естественным при управлении набором результатов БД.
Вы можете обратиться сюда:
http://docs.zope.org/zope2/zope2book/AppendixC.html#the-following-information-is-available-from-the-repeat-variable
Оператор tal: repeat очень мощный, и в вашем случае вы можете рассчитывать на «первую» переменную информацию.
Вместо простого списка событий попробуйте перебрать список словарей, в которых вы позаботились о информации isPast.
Запустите следующий (простой и брутальный) код tal ... он говорит сам за себя.
<div tal:define="past string:Past events;
future string:Events to Come;
richList python:[{'event':'event1', 'passed': past},
{'event':'event2', 'passed': future},
{'event':'event3', 'passed': past},
{'event':'event4', 'passed': future}];
dummy python:richList.sort(lambda x,y:cmp(x['passed'], y['passed']))">
<tal:block repeat="item richList">
<h2 tal:condition="repeat/item/first/passed"
tal:content="item/passed">
Past Events or Future
</h2>
<a tal:content="item/event">event's url</a>
</tal:block>
</div>
Вы можете создать свой richList, повторяющийся в результате вызова каталога. И вы можете создать элемент словаря, устанавливающий «переданное» значение в соответствии с функцией event / end / isPast.
надеюсь, это поможет.