[Zope-dev] Bug in ZTUtil.Batch solved
Andreas Jung
andreas at andreas-jung.com
Mon Mar 22 07:18:43 EST 2004
Please submit the patch (+ unittest) to the bug collector. Otherwise it
might get lost.
-aj
--On Montag, 22. März 2004 13:09 Uhr +0100 AP Meyer <a.p.meyer at fel.tno.nl>
wrote:
> Hi Zopers
>
> It seems that there is a bug in ZTUtil.Batch: when the batch should be
> the length of the batch and there are exactly as many orphans as there
> would fit on one page the length of the batch becomes size instead of
> size+orphans.
>
> Here are the numbers:
>
>
> no of
> batches start end orphan length sequence_length
> 1 1 12 3 12 12
> 1 1 10 3 10 13 <<< WRONG *
> 2 1 10 3 10 14
>
> * end and length should be 13 in this case, 3 items are omitted
>
> length=12 length=13 length=14
> 1 1 1
> 2 2 2
> 3 3 3
> 4 4 4
> 5 5 5
> 6 6 6
> 7 7 7
> 8 8 8
> 9 9 9
> 10 10 10
> 11 11 | second batch
> 12 12 |
> 13 |
> 14 |
>
>
> So, there is a jump on the edge where there should be one batch of the
> length sequence_length == length+orphans. At that point 3 (in the above
> case) items disappear.
> I have looked at the code in ZTUtils.Batch.py and found the following
> solution (line 109):
>
> 94 def opt(start,end,size,orphan,sequence):
> 95 if size < 1:
> 96 if start > 0 and end > 0 and end >= start:
> 97 size=end+1-start
> 98 else: size=7
> 99
> 100 if start > 0:
> 101
> 102 try: sequence[start-1]
> 103 except IndexError: start=len(sequence)
> 104
> 105 if end > 0:
> 106 if end < start: end=start
> 107 else:
> 108 end=start+size-1
> 109 #try: sequence[end+orphan-1]
> 110 try: sequence[end+orphan] # replace above with this
> 111 except IndexError: end=len(sequence)
> 112 ...
>
> Can somebody confirm that this solution is correct and modify it in the
> CVS, please?
>
>
> NB This has been run in Zope 2.7 with Python 2.3.3.
>
>
> thanks
> Andre
More information about the Zope-Dev
mailing list