[Zope-dev] Bug in ZTUtil.Batch solved

AP Meyer a.p.meyer at fel.tno.nl
Mon Mar 22 07:09:37 EST 2004


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
------------------------------------------------------------------------------



More information about the Zope-Dev mailing list