This module provides a sort function for use with DTML, Page
Templates, and Python-based Scripts.
Sort the sequence seq of objects by the optional sort schema
sort. sort is a sequence of tuples (key, func, direction)
that describe the sort order.
Sort child object (using the objectValues method) by id (using
the getId method), ignoring case:
<dtml-in expr="_.sequence.sort(objectValues(),
(('getId', 'nocase'),))">
<dtml-var getId> <br>
</dtml-in>
Sort child objects by title (ignoring case) and date (from newest to oldest):
<dtml-in expr="_.sequence.sort(objectValues(),
(('title', 'nocase'),
('bobobase_modification_time',
'cmp', 'desc')
))">
<dtml-var title> <dtml-var bobobase_modification_time> <br>
</dtml-in>
You can use the sequence.sort function in Python expressions
to sort objects. Here's an example that mirrors the DTML example
above:
<table tal:define="objects here/objectValues;
sort_on python:(('title', 'nocase', 'asc'),
('bobobase_modification_time', 'cmp', 'desc'));
sorted_objects python:sequence.sort(objects, sort_on)">
<tr tal:repeat="item sorted_objects">
<td tal:content="item/title">title</td>
<td tal:content="item/bobobase_modification_time">
modification date</td>
</tr>
</table>
This example iterates over a sorted list of object, drawing a table row for each object. The objects are sorted by title and modification time.