[FIX] OPW 591344 : internal reports don't show images

Cleaner method, and shows images.

bzr revid: acl@openerp.com-20130510151934-e2kvwiexdzp3zc12
This commit is contained in:
Anael Closson 2013-05-10 17:19:34 +02:00
parent 82e4bb826a
commit 66cadcdb18
1 changed files with 17 additions and 37 deletions

View File

@ -82,53 +82,33 @@ def _open_image(filename, path=None):
pass
raise IOError("File %s cannot be found in image path" % filename)
class NumberedCanvas(canvas.Canvas):
def __init__(self, *args, **kwargs):
canvas.Canvas.__init__(self, *args, **kwargs)
self._codes = []
self._flag=False
self._pageCount=0
self._currentPage =0
self._pageCounter=0
self.pages={}
self._saved_page_states = []
def showPage(self):
self._currentPage +=1
if not self._flag:
self._pageCount += 1
else:
self.pages.update({self._currentPage:self._pageCount})
self._codes.append({'code': self._code, 'stack': self._codeStack})
self._saved_page_states.append(dict(self.__dict__))
self._startPage()
self._flag=False
def pageCount(self):
if self.pages.get(self._pageCounter,False):
self._pageNumber=0
self._pageCounter +=1
key=self._pageCounter
if not self.pages.get(key,False):
while not self.pages.get(key,False):
key += 1
self.setFont("Helvetica", 8)
self.drawRightString((self._pagesize[0]-30), (self._pagesize[1]-40),
" %(this)i / %(total)i" % {
'this': self._pageNumber+1,
'total': self.pages.get(key,False),
}
)
def save(self):
"""add page info to each page (page x of y)"""
# reset page counter
self._pageNumber = 0
for code in self._codes:
self._code = code['code']
self._codeStack = code['stack']
self.pageCount()
num_pages = len(self._saved_page_states)
for state in self._saved_page_states:
self.__dict__.update(state)
self.draw_page_number(num_pages)
canvas.Canvas.showPage(self)
# self.restoreState()
self._doc.SaveToFile(self._filename, self)
canvas.Canvas.save(self)
def draw_page_number(self, page_count):
self.drawRightString((self._pagesize[0]-30), (self._pagesize[1]-40),
" %(this)i / %(total)i" % {
'this': self._pageNumber,
'total': page_count,
}
)
class PageCount(platypus.Flowable):
def __init__(self, story_count=0):