[IMP] improve usage of the ET API, use SubElement instead of Element/append, kwarg attributes setting instead of node.set
bzr revid: xmo@tinyerp.com-20091128104810-52uhz28fiw53joaz
This commit is contained in:
+17
-37
@@ -287,12 +287,11 @@ class report_custom(report_int):
|
||||
|
||||
new_doc = etree.Element('report')
|
||||
|
||||
config = etree.Element('config')
|
||||
config = etree.SubElement(new_doc, 'config')
|
||||
|
||||
def _append_node(name, text):
|
||||
n = etree.Element(name)
|
||||
n = etree.SubElement(config, name)
|
||||
t.text = text
|
||||
config.append(n)
|
||||
|
||||
_append_node('date', time.strftime('%d/%m/%Y'))
|
||||
_append_node('PageFormat', '%s' % report['print_format'])
|
||||
@@ -312,36 +311,28 @@ class report_custom(report_int):
|
||||
_append_node('report-header', '%s' % (report['title'],))
|
||||
_append_node('report-footer', '%s' % (report['footer'],))
|
||||
|
||||
new_doc.append(config)
|
||||
header = etree.Element('header')
|
||||
|
||||
header = etree.SubElement(new_doc, 'header')
|
||||
for f in fields:
|
||||
field = etree.Element('field')
|
||||
field = etree.SubElement(header, 'field')
|
||||
field.text = f['name']
|
||||
header.append(field)
|
||||
new_doc.append(header)
|
||||
|
||||
lines = etree.Element('lines')
|
||||
lines = etree.SubElement(new_doc, 'lines')
|
||||
level.reverse()
|
||||
for line in results:
|
||||
shift = level.pop()
|
||||
node_line = etree.Element('row')
|
||||
node_line = etree.SubElement(lines, 'row')
|
||||
prefix = '+'
|
||||
for f in range(len(fields)):
|
||||
col = etree.Element('col')
|
||||
col = etree.SubElement(node_line, 'col')
|
||||
if f == 0:
|
||||
col.set('para','yes')
|
||||
col.set('tree','yes')
|
||||
col.set('space',str(3*shift)+'mm')
|
||||
col.attrib.update(para='yes',
|
||||
tree='yes',
|
||||
space=str(3*shift)+'mm')
|
||||
if line[f] != None:
|
||||
col.text = prefix+str(line[f]) or ''
|
||||
else:
|
||||
col.text = '/'
|
||||
node_line.append(col)
|
||||
prefix = ''
|
||||
lines.append(node_line)
|
||||
|
||||
new_doc.append(lines)
|
||||
|
||||
transform = etree.XSLT(
|
||||
etree.parse(os.path.join(tools.config['root_path'],
|
||||
@@ -584,12 +575,11 @@ class report_custom(report_int):
|
||||
pageSize=[pageSize[1],pageSize[0]]
|
||||
|
||||
new_doc = etree.Element('report')
|
||||
config = etree.Element('config')
|
||||
config = etree.SubElement(new_doc, 'config')
|
||||
|
||||
def _append_node(name, text):
|
||||
n = etree.Element(name)
|
||||
n = etree.SubElement(config, name)
|
||||
n.text = text
|
||||
config.appendChild(n)
|
||||
|
||||
_append_node('date', time.strftime('%d/%m/%Y'))
|
||||
_append_node('PageSize', '%.2fmm,%.2fmm' % tuple(pageSize))
|
||||
@@ -609,30 +599,20 @@ class report_custom(report_int):
|
||||
_append_node('report-header', '%s' % (report['title'],))
|
||||
_append_node('report-footer', '%s' % (report['footer'],))
|
||||
|
||||
new_doc.append(config)
|
||||
header = etree.Element("header")
|
||||
|
||||
header = etree.SubElement(new_doc, 'header')
|
||||
for f in fields:
|
||||
field = etree.Element("field")
|
||||
field = etree.SubElement(header, 'field')
|
||||
field.text = f['name']
|
||||
header.append(field)
|
||||
|
||||
new_doc.append(header)
|
||||
|
||||
lines = etree.Element("lines")
|
||||
lines = etree.SubElement(new_doc, 'lines')
|
||||
for line in results:
|
||||
node_line = etree.Element("row")
|
||||
node_line = etree.SubElement(lines, 'row')
|
||||
for f in range(len(fields)):
|
||||
col = etree.Element("col")
|
||||
col.set('tree','no')
|
||||
col = etree.SubElement(node_line, 'col', tree='no')
|
||||
if line[f] != None:
|
||||
col.text = line[f] or ''
|
||||
else:
|
||||
col.text = '/'
|
||||
node_line.appendChild(col)
|
||||
lines.append(node_line)
|
||||
|
||||
new_doc.append(lines)
|
||||
|
||||
transform = etree.XSLT(
|
||||
etree.parse(os.path.join(tools.config['root_path'],
|
||||
|
||||
+9
-18
@@ -122,8 +122,7 @@ class document(object):
|
||||
#TODO: test this
|
||||
if value == '' and 'default' in attrs:
|
||||
value = attrs['default']
|
||||
el = etree.Element(node.tag)
|
||||
parent.append(el)
|
||||
el = etree.SubElement(parent, node.tag)
|
||||
el.text = tounicode(value)
|
||||
#TODO: test this
|
||||
for key, value in attrs.iteritems():
|
||||
@@ -155,31 +154,27 @@ class document(object):
|
||||
fp.write(dt)
|
||||
i = str(len(self.bin_datas))
|
||||
self.bin_datas[i] = fp
|
||||
el = etree.Element(node.tag)
|
||||
el = etree.SubElement(parent, node.tag)
|
||||
el.text = i
|
||||
parent.append(el)
|
||||
|
||||
elif attrs['type']=='data':
|
||||
#TODO: test this
|
||||
txt = self.datas.get('form', {}).get(attrs['name'], '')
|
||||
el = etree.Element(node.tag)
|
||||
el = etree.SubElement(parent, node.tag)
|
||||
el.text = txt
|
||||
parent.append(el)
|
||||
|
||||
elif attrs['type']=='function':
|
||||
if attrs['name'] in self.func:
|
||||
txt = self.func[attrs['name']](node)
|
||||
else:
|
||||
txt = print_fnc.print_fnc(attrs['name'], node)
|
||||
el = etree.Element(node.tag)
|
||||
el = etree.SubElement(parent, node.tag)
|
||||
el.text = txt
|
||||
parent.append(el)
|
||||
|
||||
elif attrs['type']=='eval':
|
||||
value = self.eval(browser, attrs['expr'])
|
||||
el = etree.Element(node.tag)
|
||||
el = etree.SubElement(parent, node.tag)
|
||||
el.text = str(value)
|
||||
parent.append(el)
|
||||
|
||||
elif attrs['type']=='fields':
|
||||
fields = attrs['name'].split(',')
|
||||
@@ -197,8 +192,7 @@ class document(object):
|
||||
|
||||
v_list = [vals[k] for k in keys]
|
||||
for v in v_list:
|
||||
el = etree.Element(node.tag)
|
||||
parent.append(el)
|
||||
el = etree.SubElement(parent, node.tag)
|
||||
for el_cld in node:
|
||||
self.parse_node(el_cld, el, v)
|
||||
|
||||
@@ -232,8 +226,7 @@ class document(object):
|
||||
|
||||
def parse_result_tree(node, parent, datas):
|
||||
if not node.tag == etree.Comment:
|
||||
el = etree.Element(node.tag)
|
||||
parent.append(el)
|
||||
el = etree.SubElement(parent, node.tag)
|
||||
atr = self.node_attrs_get(node)
|
||||
if 'value' in atr:
|
||||
if not isinstance(datas[atr['value']], (str, unicode)):
|
||||
@@ -257,8 +250,7 @@ class document(object):
|
||||
else:
|
||||
v_list = value
|
||||
for v in v_list:
|
||||
el = etree.Element(node.tag)
|
||||
parent.append(el)
|
||||
el = etree.SubElement(parent, node.tag)
|
||||
for el_cld in node:
|
||||
self.parse_node(el_cld, el, v)
|
||||
else:
|
||||
@@ -267,8 +259,7 @@ class document(object):
|
||||
if node.tag == parent.tag:
|
||||
el = parent
|
||||
else:
|
||||
el = etree.Element(node.tag)
|
||||
parent.append(el)
|
||||
el = etree.SubElement(parent, node.tag)
|
||||
for el_cld in node:
|
||||
self.parse_node(el_cld,el, browser)
|
||||
def xml_get(self):
|
||||
|
||||
@@ -77,19 +77,17 @@ class report_printscreen_list(report_int):
|
||||
pageSize=[297.0,210.0]
|
||||
|
||||
new_doc = etree.Element("report")
|
||||
config = etree.Element("config")
|
||||
config = etree.SubElement(new_doc, 'config')
|
||||
|
||||
# build header
|
||||
def _append_node(name, text):
|
||||
n = etree.Element(name)
|
||||
n = etree.SubElement(config, name)
|
||||
n.text = text
|
||||
config.append(n)
|
||||
|
||||
_append_node('date', time.strftime('%d/%m/%Y'))
|
||||
_append_node('PageSize', '%.2fmm,%.2fmm' % tuple(pageSize))
|
||||
_append_node('PageWidth', '%.2f' % (pageSize[0] * 2.8346,))
|
||||
_append_node('PageHeight', '%.2f' %(pageSize[1] * 2.8346,))
|
||||
|
||||
_append_node('report-header', title)
|
||||
|
||||
l = []
|
||||
@@ -108,17 +106,15 @@ class report_printscreen_list(report_int):
|
||||
s = fields[fields_order[pos]].get('size', 56) / 28 + 1
|
||||
l[pos] = strmax * s / t
|
||||
_append_node('tableSize', ','.join(map(str,l)) )
|
||||
new_doc.append(config)
|
||||
header=etree.Element("header")
|
||||
|
||||
header = etree.SubElement(new_doc, 'header')
|
||||
for f in fields_order:
|
||||
field = etree.Element("field")
|
||||
field = etree.SubElement(header, 'field')
|
||||
field.text = fields[f]['string'] or ''
|
||||
header.append(field)
|
||||
new_doc.append(header)
|
||||
lines = etree.Element("lines")
|
||||
|
||||
lines = etree.SubElement(new_doc, 'lines')
|
||||
for line in results:
|
||||
node_line = etree.Element("row")
|
||||
node_line = etree.SubElement(lines, 'row')
|
||||
for f in fields_order:
|
||||
if fields[f]['type']=='many2one' and line[f]:
|
||||
line[f] = line[f][1]
|
||||
@@ -127,15 +123,11 @@ class report_printscreen_list(report_int):
|
||||
if fields[f]['type'] == 'float':
|
||||
precision=(('digits' in fields[f]) and fields[f]['digits'][1]) or 2
|
||||
line[f]=round(line[f],precision)
|
||||
col = etree.Element("col")
|
||||
col.set('tree','no')
|
||||
col = etree.SubElement(node_line, 'col', tree='no')
|
||||
if line[f] != None:
|
||||
col.text = tools.ustr(line[f] or '')
|
||||
else:
|
||||
col.text = '/'
|
||||
node_line.append(col)
|
||||
lines.append(node_line)
|
||||
new_doc.append(node_line)
|
||||
|
||||
transform = etree.XSLT(
|
||||
etree.parse(os.path.join(tools.config['root_path'],
|
||||
|
||||
@@ -89,30 +89,28 @@ class report_printscreen_list(report_int):
|
||||
|
||||
def _create_table(self, uid, ids, fields, fields_order, results, context, title=''):
|
||||
pageSize=[297.0, 210.0]
|
||||
new_doc = etree.Element("report")
|
||||
config = etree.Element("config")
|
||||
|
||||
# build header
|
||||
new_doc = etree.Element("report")
|
||||
config = etree.SubElement(new_doc, 'config')
|
||||
|
||||
def _append_node(name, text):
|
||||
n = etree.Element(name)
|
||||
n = etree.SubElement(config, name)
|
||||
n.text = text
|
||||
config.append(n)
|
||||
|
||||
#_append_node('date', time.strftime('%d/%m/%Y'))
|
||||
_append_node('date', time.strftime(str(locale.nl_langinfo(locale.D_FMT).replace('%y', '%Y'))))
|
||||
_append_node('PageSize', '%.2fmm,%.2fmm' % tuple(pageSize))
|
||||
_append_node('PageWidth', '%.2f' % (pageSize[0] * 2.8346,))
|
||||
_append_node('PageHeight', '%.2f' %(pageSize[1] * 2.8346,))
|
||||
|
||||
_append_node('report-header', title)
|
||||
|
||||
l = []
|
||||
t = 0
|
||||
rowcount=0;
|
||||
strmax = (pageSize[0]-40) * 2.8346
|
||||
temp = []
|
||||
count = len(fields_order)
|
||||
for i in range(0,count):
|
||||
for i in range(0, count):
|
||||
temp.append(0)
|
||||
|
||||
ince = -1;
|
||||
@@ -134,24 +132,20 @@ class report_printscreen_list(report_int):
|
||||
l[pos] = strmax * s / t
|
||||
|
||||
_append_node('tableSize', ','.join(map(str,l)) )
|
||||
new_doc.append(config)
|
||||
header=etree.Element("header")
|
||||
|
||||
|
||||
header = etree.SubElement(new_doc, 'header')
|
||||
for f in fields_order:
|
||||
field = etree.Element("field")
|
||||
field = etree.SubElement(header, 'field')
|
||||
field.text = tools.ustr(fields[f]['string'] or '')
|
||||
header.append(field)
|
||||
|
||||
new_doc.append(header)
|
||||
lines = etree.Element("lines")
|
||||
lines = etree.SubElement(new_doc, 'lines')
|
||||
tsum = []
|
||||
count = len(fields_order)
|
||||
for i in range(0,count):
|
||||
tsum.append(0)
|
||||
|
||||
for line in results:
|
||||
node_line = etree.Element("row")
|
||||
node_line = etree.SubElement(lines, 'row')
|
||||
count = -1
|
||||
for f in fields_order:
|
||||
float_flag = 0
|
||||
@@ -193,28 +187,19 @@ class report_printscreen_list(report_int):
|
||||
new_d1 = d1.strftime(format)
|
||||
line[f] = new_d1
|
||||
|
||||
col = etree.Element("col")
|
||||
col.set('para','yes')
|
||||
col.set('tree','no')
|
||||
col = etree.SubElement(node_line, 'col', para='yes', tree='no')
|
||||
if line[f] != None:
|
||||
col.text = tools.ustr(line[f] or '')
|
||||
if float_flag:
|
||||
col.set('tree','float')
|
||||
if temp[count] == 1:
|
||||
tsum[count] = float(tsum[count]) + float(line[f]);
|
||||
|
||||
|
||||
else:
|
||||
col.text = '/'
|
||||
node_line.append(col)
|
||||
lines.append(node_line)
|
||||
node_line = etree.Element("row")
|
||||
lines.append(node_line)
|
||||
|
||||
node_line = etree.SubElement(lines, 'row')
|
||||
for f in range(0,count+1):
|
||||
col = etree.Element("col")
|
||||
col.set('para','yes')
|
||||
col.set('tree','no')
|
||||
col = etree.SubElement(node_line, 'col', para='yes', tree='no')
|
||||
if tsum[f] != None:
|
||||
if tsum[f] >= 0.01 :
|
||||
prec = '%.' + str(tools.config['price_accuracy']) + 'f'
|
||||
@@ -229,11 +214,6 @@ class report_printscreen_list(report_int):
|
||||
txt ='Total'
|
||||
|
||||
col.text = tools.ustr(txt or '')
|
||||
node_line.append(col)
|
||||
|
||||
lines.append(node_line)
|
||||
|
||||
new_doc.append(lines)
|
||||
|
||||
transform = etree.XSLT(
|
||||
etree.parse(os.path.join(tools.config['root_path'],
|
||||
|
||||
@@ -104,12 +104,10 @@ class _flowable(object):
|
||||
process(node,new_node)
|
||||
if new_node.get('colWidths',False):
|
||||
sizes = map(lambda x: utils.unit_get(x), new_node.get('colWidths').split(','))
|
||||
tr = etree.Element('tr')
|
||||
tr = etree.SubElement(new_node, 'tr')
|
||||
for s in sizes:
|
||||
td = etree.Element('td')
|
||||
td.set("width", str(s))
|
||||
tr.append(td)
|
||||
new_node.append(tr)
|
||||
etree.SubElement(tr, 'td', width=str(s))
|
||||
|
||||
return etree.tostring(new_node)
|
||||
|
||||
def _tag_para(self, node):
|
||||
@@ -458,4 +456,4 @@ if __name__=="__main__":
|
||||
print 'Usage: trml2pdf input.rml >output.pdf'
|
||||
print 'Try \'trml2pdf --help\' for more information.'
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
Reference in New Issue
Block a user