remove use of global variable

bzr revid: christophe@tinyerp.com-20080924153410-hdkfx2ddzg8zjje1
This commit is contained in:
Christophe Simonis
2008-09-24 17:34:10 +02:00
parent 520e5d3630
commit bb8d92c55a
4 changed files with 36 additions and 37 deletions
+7 -6
View File
@@ -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
+4 -6
View File
@@ -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')
+4 -6
View File
@@ -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')
+21 -19
View File
@@ -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)