[Zope-dev] Bug in ZTUtil.Batch solved

Jens Vagelpohl jens at zope.com
Mon Mar 22 07:24:22 EST 2004


Please post this in the Collector at http://zope.org/Collectors/Zope

jens


On Mar 22, 2004, at 7:09, AP Meyer 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
>
>
>
> --  
> ----------------------------------------------------------------------- 
> -------
> The disclaimer that applies to e-mail from
> TNO Physics and Electronics Laboratory
> can be found on: http://www.tno.nl/disclaimer/email.html
> ----------------------------------------------------------------------- 
> -------
>
> _______________________________________________
> Zope-Dev maillist  -  Zope-Dev at zope.org
> http://mail.zope.org/mailman/listinfo/zope-dev
> **  No cross posts or HTML encoding!  **
> (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce
> http://mail.zope.org/mailman/listinfo/zope )
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2355 bytes
Desc: not available
Url : http://mail.zope.org/pipermail/zope-dev/attachments/20040322/8efbc678/smime.bin


More information about the Zope-Dev mailing list