# HG changeset patch # User rgbecker # Date 1236101921 0 # Node ID 0f15fabe9d8de42c6016541de92642c4842b7011 # Parent 0770d19dc0523ef5a8c4f44bfa22e00708b34f4a reportlab: improve information in doctemplate overflow error diff -r 0770d19dc052 -r 0f15fabe9d8d src/reportlab/platypus/doctemplate.py --- a/src/reportlab/platypus/doctemplate.py Tue Mar 03 15:24:57 2009 +0000 +++ b/src/reportlab/platypus/doctemplate.py Tue Mar 03 17:38:41 2009 +0000 @@ -48,6 +48,20 @@ class LayoutError(Exception): pass +def _fSizeString(f): + w=getattr(f,'width',None) + if w is None: + w=getattr(f,'_width',None) + + h=getattr(f,'height',None) + if h is None: + h=getattr(f,'_height',None) + if w is not None or h is not None: + if w is None: w='???' + if h is None: h='???' + return '(%s x %s)' % (w,h) + return '' + def _doNothing(canvas, doc): "Dummy callback for onPage" pass @@ -691,8 +705,9 @@ flowables.insert(i,f) # put split flowables back on the list else: if hasattr(f,'_postponed'): - ident = "Flowable %s too large on page %d in frame '%s' of template '%s'" % \ - (self._fIdent(f,60,frame), self.page, self.frame.id, self.pageTemplate.id) + ident = "Flowable %s%s too large on page %d in frame %r%s of template %r" % \ + (self._fIdent(f,60,frame),_fSizeString(f),self.page, self.frame.id, + self.frame._aSpaceString(), self.pageTemplate.id) #leave to keep apart from the raise raise LayoutError(ident) # this ought to be cleared when they are finally drawn! diff -r 0770d19dc052 -r 0f15fabe9d8d src/reportlab/platypus/frames.py --- a/src/reportlab/platypus/frames.py Tue Mar 03 15:24:57 2009 +0000 +++ b/src/reportlab/platypus/frames.py Tue Mar 03 17:38:41 2009 +0000 @@ -247,3 +247,6 @@ def add_generated_content(self,*C): self.__dict__.setdefault('_generated_content',[]).extend(C) + + def _aSpaceString(self): + return '(%s x %s%s)' % (self._getAvailableWidth(),self._aH,self._atTop and '*' or '')