diff --git a/openerp/report/render/rml2html/utils.py b/openerp/report/render/rml2html/utils.py
index 9d1d15da14c..b811cc5d47b 100644
--- a/openerp/report/render/rml2html/utils.py
+++ b/openerp/report/render/rml2html/utils.py
@@ -48,7 +48,9 @@ def tuple_int_get(node, attr_name, default=None):
def bool_get(value):
return (str(value)=="1") or (value.lower()=='yes')
-def attr_get(node, attrs, dict={}):
+def attr_get(node, attrs, dict=None):
+ if dict is None:
+ dict = {}
res = {}
for name in attrs:
if node.get(name):
diff --git a/openerp/report/render/rml2pdf/trml2pdf.py b/openerp/report/render/rml2pdf/trml2pdf.py
index 09690fb75c2..639d62a1aa9 100644
--- a/openerp/report/render/rml2pdf/trml2pdf.py
+++ b/openerp/report/render/rml2pdf/trml2pdf.py
@@ -226,7 +226,9 @@ class _rml_styles(object,):
return style
class _rml_doc(object):
- def __init__(self, node, localcontext, images={}, path='.', title=None):
+ def __init__(self, node, localcontext, images=None, path='.', title=None):
+ if images is None:
+ images = {}
self.localcontext = localcontext
self.etree = node
self.filename = self.etree.get('filename')
@@ -311,7 +313,9 @@ class _rml_doc(object):
self.canvas.save()
class _rml_canvas(object):
- def __init__(self, canvas, localcontext, doc_tmpl=None, doc=None, images={}, path='.', title=None):
+ def __init__(self, canvas, localcontext, doc_tmpl=None, doc=None, images=None, path='.', title=None):
+ if images is None:
+ images = {}
self.localcontext = localcontext
self.canvas = canvas
self.styles = doc.styles
@@ -564,7 +568,9 @@ class _rml_canvas(object):
tags[n.tag](n)
class _rml_draw(object):
- def __init__(self, localcontext ,node, styles, images={}, path='.', title=None):
+ def __init__(self, localcontext, node, styles, images=None, path='.', title=None):
+ if images is None:
+ images = {}
self.localcontext = localcontext
self.node = node
self.styles = styles
@@ -595,10 +601,12 @@ class _rml_Illustration(platypus.flowables.Flowable):
class _rml_flowable(object):
def __init__(self, doc, localcontext, images=None, path='.', title=None):
+ if images is None:
+ images = {}
self.localcontext = localcontext
self.doc = doc
self.styles = doc.styles
- self.images = images or {}
+ self.images = images
self.path = path
self.title = title
self._logger = logging.getLogger('report.rml.flowable')
@@ -890,7 +898,9 @@ class TinyDocTemplate(platypus.BaseDocTemplate):
self.canv._pageNumber = 0
class _rml_template(object):
- def __init__(self, localcontext, out, node, doc, images={}, path='.', title=None):
+ def __init__(self, localcontext, out, node, doc, images=None, path='.', title=None):
+ if images is None:
+ images = {}
if not localcontext:
localcontext={'internal_header':True}
self.localcontext = localcontext
@@ -951,12 +961,12 @@ class _rml_template(object):
fis.append(PageCount())
self.doc_tmpl.build(fis)
-def parseNode(rml, localcontext=None,fout=None, images=None, path='.',title=None):
- node = etree.XML(rml)
+def parseNode(rml, localcontext=None, fout=None, images=None, path='.', title=None):
if localcontext is None:
localcontext = {}
if images is None:
images = {}
+ node = etree.XML(rml)
r = _rml_doc(node, localcontext, images, path, title=title)
#try to override some font mappings
try:
@@ -972,7 +982,11 @@ def parseNode(rml, localcontext=None,fout=None, images=None, path='.',title=None
r.render(fp)
return fp.getvalue()
-def parseString(rml, localcontext = {},fout=None, images={}, path='.',title=None):
+def parseString(rml, localcontext=None, fout=None, images=None, path='.', title=None):
+ if localcontext is None:
+ localcontext = {}
+ if images is None:
+ images = {}
node = etree.XML(rml)
r = _rml_doc(node, localcontext, images, path, title=title)
diff --git a/openerp/report/render/rml2pdf/utils.py b/openerp/report/render/rml2pdf/utils.py
index 656045c5c62..cd6b629d84f 100644
--- a/openerp/report/render/rml2pdf/utils.py
+++ b/openerp/report/render/rml2pdf/utils.py
@@ -179,7 +179,9 @@ def tuple_int_get(node, attr_name, default=None):
def bool_get(value):
return (str(value)=="1") or (value.lower()=='yes')
-def attr_get(node, attrs, dict={}):
+def attr_get(node, attrs, dict=None):
+ if dict is None:
+ dict = {}
res = {}
for name in attrs:
if node.get(name):
diff --git a/openerp/report/render/rml2txt/rml2txt.py b/openerp/report/render/rml2txt/rml2txt.py
index b6e5b54c357..3e0fcf37bdd 100755
--- a/openerp/report/render/rml2txt/rml2txt.py
+++ b/openerp/report/render/rml2txt/rml2txt.py
@@ -375,7 +375,7 @@ class _rml_draw_style(object):
return ';'.join(['%s:%s' % (x[0],x[1]) for x in self.style[tag].items()])
class _rml_template(object):
- def __init__(self, localcontext, out, node, doc, images={}, path='.', title=None):
+ def __init__(self, localcontext, out, node, doc, images=None, path='.', title=None):
self.localcontext = localcontext
self.frame_pos = -1
self.frames = []
@@ -465,7 +465,7 @@ class _rml_template(object):
return result
class _rml_doc(object):
- def __init__(self, node, localcontext, images={}, path='.', title=None):
+ def __init__(self, node, localcontext, images=None, path='.', title=None):
self.localcontext = localcontext
self.etree = node
self.filename = self.etree.get('filename')
@@ -495,14 +495,18 @@ class _rml_doc(object):
self.result += '\n'
out.write( self.result)
-def parseNode(rml, localcontext = {},fout=None, images={}, path='.',title=None):
+def parseNode(rml, localcontext = {},fout=None, images=None, path='.',title=None):
+ if images is None:
+ images = {}
node = etree.XML(rml)
r = _rml_doc(node, localcontext, images, path, title=title)
fp = StringIO.StringIO()
r.render(fp)
return fp.getvalue()
-def parseString(rml, localcontext = {},fout=None, images={}, path='.',title=None):
+def parseString(rml, localcontext = {},fout=None, images=None, path='.',title=None):
+ if images is None:
+ images = {}
node = etree.XML(rml)
r = _rml_doc(node, localcontext, images, path, title=title)
if fout:
diff --git a/openerp/report/render/rml2txt/utils.py b/openerp/report/render/rml2txt/utils.py
index d967b64c53d..122411afb2d 100644
--- a/openerp/report/render/rml2txt/utils.py
+++ b/openerp/report/render/rml2txt/utils.py
@@ -112,7 +112,9 @@ def tuple_int_get(node, attr_name, default=None):
def bool_get(value):
return (str(value)=="1") or (value.lower()=='yes')
-def attr_get(node, attrs, dict={}):
+def attr_get(node, attrs, dict=None):
+ if dict is None:
+ dict = {}
res = {}
for name in attrs:
if node.get(name):