[Zope] batching help

J Cameron Cooper zope-l at jcameroncooper.com
Thu Dec 15 12:25:03 EST 2005


Nicolas Georgakopoulos wrote:
> Dragos Chirila wrote:
> 
>> Hi
>>
>> I suggest to use the following function that
>>
>> def get_grouped_list(self, seq=[], size=3):
>>     #get the list with all items grouped
>>     return [seq[i:i+size] for i in range(0, len(seq), size)]
>>
>> that takes as parameter a list and goups items in slices with length = 
>> size.
>>
>> >>> def get_grouped_list(seq=[], size=3):
>> ...     return [seq[i:i+size] for i in range(0, len(seq), size)]
>> ...
>> >>> l = [1,2,3,4,5,6,7,8]
>> >>> get_grouped_list(l)
>> [[1, 2, 3], [4, 5, 6], [7, 8]]
>> >>> get_grouped_list(l, 4)
>> [[1, 2, 3, 4], [5, 6, 7, 8]]
>> >>>
>>
>> Then iterating this is something like:
>>
>> <tr tal:repeat="slice python:<someobject>.get_grouped_list(yourlist)">
>>     <td tal:repeat="item slice">
>>         <span tal:replace="item" />
>>     </td>
>> </tr>
>>
>> Nicolas Georgakopoulos wrote:
>>
>>> Hello all , I'm trying to display on the same page a table with (3 
>>> columns) with content from a list . I'm trying to batch the results 
>>> so that every 3 elements anothe row is created.
>>> Can anyone give me a clue how to do that ?
>>>
>>> this is my code:
>>>
>>>
>>> <table tal:define="Rnumber 
>>> python:context.cm1.content.specialfile.getList('link_list') ; batch 
>>> python:modules['ZTUtils'].Batch(Rnumber,size=3,start=0)">
>>>        <th colspan="3">Main Title</th>
>>>                <tr><th>Title 1</th><th>Title 2</th><th>Title 3</th></tr>
>>>                <tr>
>>>                                <td tal:repeat="num batch">
>>>                                <span tal:condition="python:num < 3" 
>>> tal:replace="structure num"> content goes here.. </span>
>>>                    </td>
>>>                </tr>                                     <!--  <tr>
>>>                                    <td tal:repeat="num batch">
>>>                                <span tal:replace="structure num"> 
>>> Material goes here </span>
>>>                    </td>
>>>                </tr> 
>>> -->                                                     </table>
> Thanks for your suggestion Dragos , I want to do it the zope batch way 
> (I suppose it is simpler) if I can...
> I will keep in mind your function if nothing else can be done.

The ZTUtils batching is mostly for batching between pages. It's probably 
easier to do it in a Python script.

		--jcc
-- 
"Building Websites with Plone"
http://plonebook.packtpub.com/

Enfold Systems, LLC
http://www.enfoldsystems.com


More information about the Zope mailing list