remove use of global variable
bzr revid: christophe@tinyerp.com-20080924153410-hdkfx2ddzg8zjje1
This commit is contained in:
@@ -64,6 +64,7 @@ class report_int(netsvc.Service):
|
||||
self.name = name
|
||||
self.id = 0
|
||||
self.name2 = '.'.join(name.split('.')[1:])
|
||||
self.title = None
|
||||
self.joinGroup('report')
|
||||
self.exportMethod(self.create)
|
||||
|
||||
@@ -101,10 +102,10 @@ class report_rml(report_int):
|
||||
ir_actions_report_xml_obj = pool.get('ir.actions.report.xml')
|
||||
report_xml_ids = ir_actions_report_xml_obj.search(cr, uid,
|
||||
[('report_name', '=', self.name[7:])], context=context)
|
||||
ftitle = ir_actions_report_xml_obj.browse(cr,uid,report_xml_ids)[0].name
|
||||
self.title = ir_actions_report_xml_obj.browse(cr,uid,report_xml_ids)[0].name
|
||||
report_type = datas.get('report_type', 'pdf')
|
||||
create_doc = self.generators[report_type]
|
||||
pdf = create_doc(rml,title=ftitle)
|
||||
pdf = create_doc(rml, title=self.title)
|
||||
return (pdf, report_type)
|
||||
|
||||
def create_xml(self, cr, uid, ids, datas, context=None):
|
||||
@@ -196,7 +197,7 @@ class report_rml(report_int):
|
||||
result.freeDoc()
|
||||
return xml
|
||||
|
||||
def create_pdf(self, xml, logo=None,title=None):
|
||||
def create_pdf(self, xml, logo=None, title=None):
|
||||
if logo:
|
||||
self.bin_datas['logo'] = logo
|
||||
else:
|
||||
@@ -206,15 +207,15 @@ class report_rml(report_int):
|
||||
obj.render()
|
||||
return obj.get()
|
||||
|
||||
def create_html(self, xml, logo=None,title=None):
|
||||
def create_html(self, xml, logo=None, title=None):
|
||||
obj = render.rml2html(xml, self.bin_datas)
|
||||
obj.render()
|
||||
return obj.get()
|
||||
|
||||
def create_raw(self, xml, logo=None,title=None):
|
||||
def create_raw(self, xml, logo=None, title=None):
|
||||
return xml
|
||||
|
||||
def create_sxw(self, path, logo=None,title=None):
|
||||
def create_sxw(self, path, logo=None, title=None):
|
||||
return path
|
||||
|
||||
from report_sxw import report_sxw
|
||||
|
||||
@@ -39,7 +39,7 @@ import libxml2
|
||||
import libxslt
|
||||
|
||||
import time, os
|
||||
ftitle=""
|
||||
|
||||
class report_printscreen_list(report_int):
|
||||
def __init__(self, name):
|
||||
report_int.__init__(self, name)
|
||||
@@ -63,7 +63,6 @@ class report_printscreen_list(report_int):
|
||||
return self._parse_node(dom)
|
||||
|
||||
def create(self, cr, uid, ids, datas, context=None):
|
||||
global ftitle
|
||||
if not context:
|
||||
context={}
|
||||
datas['ids'] = ids
|
||||
@@ -71,10 +70,10 @@ class report_printscreen_list(report_int):
|
||||
model_id = pool.get('ir.model').search(cr, uid, [('model','=',model._name)])
|
||||
if model_id:
|
||||
model_desc = pool.get('ir.model').browse(cr, uid, model_id, context).name
|
||||
ftitle=model_desc
|
||||
self.title = model_desc
|
||||
else:
|
||||
model_desc = model._description
|
||||
ftitle=model_desc
|
||||
self.title = model_desc
|
||||
|
||||
model = pool.get(datas['model'])
|
||||
result = model.fields_view_get(cr, uid, view_type='tree', context=context)
|
||||
@@ -158,8 +157,7 @@ class report_printscreen_list(report_int):
|
||||
doc = libxml2.parseDoc(new_doc.toxml())
|
||||
rml_obj = style.applyStylesheet(doc, None)
|
||||
rml = style.saveResultToString(rml_obj)
|
||||
global ftitle
|
||||
self.obj = render.rml(rml,ftitle)
|
||||
self.obj = render.rml(rml, self.title)
|
||||
self.obj.render()
|
||||
return True
|
||||
report_printscreen_list('report.printscreen.form')
|
||||
|
||||
@@ -39,7 +39,7 @@ import libxml2
|
||||
import libxslt
|
||||
|
||||
import time, os
|
||||
ftitle=""
|
||||
|
||||
class report_printscreen_list(report_int):
|
||||
def __init__(self, name):
|
||||
report_int.__init__(self, name)
|
||||
@@ -63,7 +63,6 @@ class report_printscreen_list(report_int):
|
||||
return self._parse_node(dom)
|
||||
|
||||
def create(self, cr, uid, ids, datas, context=None):
|
||||
global ftitle
|
||||
if not context:
|
||||
context={}
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
@@ -71,10 +70,10 @@ class report_printscreen_list(report_int):
|
||||
model_id = pool.get('ir.model').search(cr, uid, [('model','=',model._name)])
|
||||
if model_id:
|
||||
model_desc = pool.get('ir.model').browse(cr, uid, model_id[0], context).name
|
||||
ftitle=model_desc
|
||||
self.title = model_desc
|
||||
else:
|
||||
model_desc = model._description
|
||||
ftitle=model_desc
|
||||
self.title = model_desc
|
||||
|
||||
datas['ids'] = ids
|
||||
model = pooler.get_pool(cr.dbname).get(datas['model'])
|
||||
@@ -202,8 +201,7 @@ class report_printscreen_list(report_int):
|
||||
doc = libxml2.parseDoc(new_doc.toxml())
|
||||
rml_obj = style.applyStylesheet(doc, None)
|
||||
rml = style.saveResultToString(rml_obj)
|
||||
global ftitle
|
||||
self.obj = render.rml(rml,title=ftitle)
|
||||
self.obj = render.rml(rml, title=self.title)
|
||||
self.obj.render()
|
||||
return True
|
||||
report_printscreen_list('report.printscreen.list')
|
||||
|
||||
@@ -60,7 +60,7 @@ from reportlab import platypus
|
||||
import utils
|
||||
import color
|
||||
import os
|
||||
ftitle=""
|
||||
|
||||
#
|
||||
# Change this to UTF-8 if you plan tu use Reportlab's UTF-8 support
|
||||
#
|
||||
@@ -180,11 +180,12 @@ class _rml_styles(object):
|
||||
return style
|
||||
|
||||
class _rml_doc(object):
|
||||
def __init__(self, data, images={}, path='.'):
|
||||
def __init__(self, data, images={}, path='.', title=None):
|
||||
self.dom = xml.dom.minidom.parseString(data)
|
||||
self.filename = self.dom.documentElement.getAttribute('filename')
|
||||
self.images = images
|
||||
self.path = path
|
||||
self.title = title
|
||||
|
||||
def docinit(self, els):
|
||||
from reportlab.lib.fonts import addMapping
|
||||
@@ -229,28 +230,28 @@ class _rml_doc(object):
|
||||
|
||||
el = self.dom.documentElement.getElementsByTagName('template')
|
||||
if len(el):
|
||||
pt_obj = _rml_template(out, el[0], self, images=self.images, path=self.path)
|
||||
pt_obj = _rml_template(out, el[0], self, images=self.images, path=self.path, title=self.title)
|
||||
pt_obj.render(self.dom.documentElement.getElementsByTagName('story'))
|
||||
else:
|
||||
self.canvas = canvas.Canvas(out)
|
||||
pd = self.dom.documentElement.getElementsByTagName('pageDrawing')[0]
|
||||
pd_obj = _rml_canvas(self.canvas, None, self, self.images, path=self.path)
|
||||
pd_obj = _rml_canvas(self.canvas, None, self, self.images, path=self.path, title=self.title)
|
||||
pd_obj.render(pd)
|
||||
|
||||
self.canvas.showPage()
|
||||
self.canvas.save()
|
||||
|
||||
class _rml_canvas(object):
|
||||
def __init__(self, canvas, doc_tmpl=None, doc=None, images={}, path='.'):
|
||||
def __init__(self, canvas, doc_tmpl=None, doc=None, images={}, path='.', title=None):
|
||||
self.canvas = canvas
|
||||
self.styles = doc.styles
|
||||
self.doc_tmpl = doc_tmpl
|
||||
self.doc = doc
|
||||
self.images = images
|
||||
self.path = path
|
||||
global ftitle
|
||||
if ftitle:
|
||||
self.canvas.setTitle(ftitle)
|
||||
self.title = title
|
||||
if self.title:
|
||||
self.canvas.setTitle(self.title)
|
||||
|
||||
def _textual(self, node, x=0, y=0):
|
||||
rc = ''
|
||||
@@ -324,7 +325,7 @@ class _rml_canvas(object):
|
||||
self.canvas.circle(x_cen=utils.unit_get(node.getAttribute('x')), y_cen=utils.unit_get(node.getAttribute('y')), r=utils.unit_get(node.getAttribute('radius')), **utils.attr_get(node, [], {'fill':'bool','stroke':'bool'}))
|
||||
|
||||
def _place(self, node):
|
||||
flows = _rml_flowable(self.doc, images=self.images, path=self.path).render(node)
|
||||
flows = _rml_flowable(self.doc, images=self.images, path=self.path, title=self.title).render(node)
|
||||
infos = utils.attr_get(node, ['x','y','width','height'])
|
||||
|
||||
infos['y']+=infos['height']
|
||||
@@ -450,25 +451,27 @@ class _rml_canvas(object):
|
||||
break
|
||||
|
||||
class _rml_draw(object):
|
||||
def __init__(self, node, styles, images={}, path='.'):
|
||||
def __init__(self, node, styles, images={}, path='.', title=None):
|
||||
self.node = node
|
||||
self.styles = styles
|
||||
self.canvas = None
|
||||
self.images = images
|
||||
self.path = path
|
||||
self.canvas_title = title
|
||||
|
||||
def render(self, canvas, doc):
|
||||
canvas.saveState()
|
||||
cnv = _rml_canvas(canvas, doc, self.styles, images=self.images, path=self.path)
|
||||
cnv = _rml_canvas(canvas, doc, self.styles, images=self.images, path=self.path, title=self.canvas_title)
|
||||
cnv.render(self.node)
|
||||
canvas.restoreState()
|
||||
|
||||
class _rml_flowable(object):
|
||||
def __init__(self, doc, images={}, path='.'):
|
||||
def __init__(self, doc, images={}, path='.', title=None):
|
||||
self.doc = doc
|
||||
self.styles = doc.styles
|
||||
self.images = images
|
||||
self.path = path
|
||||
self.title = title
|
||||
|
||||
def _textual(self, node):
|
||||
rc = ''
|
||||
@@ -569,7 +572,7 @@ class _rml_flowable(object):
|
||||
return (self.width, self.height)
|
||||
def draw(self):
|
||||
canvas = self.canv
|
||||
drw = _rml_draw(self.node, self.styles, images=self.self2.images, path=self.self2.path)
|
||||
drw = _rml_draw(self.node, self.styles, images=self.self2.images, path=self.self2.path, title=self.self2.title)
|
||||
drw.render(self.canv, None)
|
||||
return Illustration(node, self.styles, self)
|
||||
|
||||
@@ -741,9 +744,10 @@ class TinyDocTemplate(platypus.BaseDocTemplate):
|
||||
self.canv._pageNumber = 0
|
||||
|
||||
class _rml_template(object):
|
||||
def __init__(self, out, node, doc, images={}, path='.'):
|
||||
def __init__(self, out, node, doc, images={}, path='.', title=None):
|
||||
self.images= images
|
||||
self.path = path
|
||||
self.title = title
|
||||
if not node.hasAttribute('pageSize'):
|
||||
pageSize = (utils.unit_get('21cm'), utils.unit_get('29.7cm'))
|
||||
else:
|
||||
@@ -764,7 +768,7 @@ class _rml_template(object):
|
||||
frames.append( frame )
|
||||
gr = pt.getElementsByTagName('pageGraphics')
|
||||
if len(gr):
|
||||
drw = _rml_draw(gr[0], self.doc, images=images, path=self.path)
|
||||
drw = _rml_draw(gr[0], self.doc, images=images, path=self.path, title=self.title)
|
||||
self.page_templates.append( platypus.PageTemplate(frames=frames, onPage=drw.render, **utils.attr_get(pt, [], {'id':'str'}) ))
|
||||
else:
|
||||
self.page_templates.append( platypus.PageTemplate(frames=frames, **utils.attr_get(pt, [], {'id':'str'}) ))
|
||||
@@ -772,7 +776,7 @@ class _rml_template(object):
|
||||
|
||||
def render(self, node_stories):
|
||||
fis = []
|
||||
r = _rml_flowable(self.doc,images=self.images, path=self.path)
|
||||
r = _rml_flowable(self.doc,images=self.images, path=self.path, title=self.title)
|
||||
for node_story in node_stories:
|
||||
fis += r.render(node_story)
|
||||
if node_story==node_stories[-1]:
|
||||
@@ -784,9 +788,7 @@ class _rml_template(object):
|
||||
self.doc_tmpl.build(fis)
|
||||
|
||||
def parseString(data, fout=None, images={}, path='.',title=None):
|
||||
r = _rml_doc(data, images, path)
|
||||
global ftitle
|
||||
ftitle=title
|
||||
r = _rml_doc(data, images, path, title=title)
|
||||
if fout:
|
||||
fp = file(fout,'wb')
|
||||
r.render(fp)
|
||||
|
||||
Reference in New Issue
Block a user