İçereği Atla
Menü
Bu soru işaretlendi
1 Cevapla
6198 Görünümler

I am trying to return the entire XML chunk to the controller in order to make them downloaded as an XML file.

  from xml.etree import ElementTree as ET  
    @api.model
    
def _xml_download(self): root
root = ET.Element("Test A")
doc = ET.Element("Test B")
root.append(doc)
return ET.ElementTree(root)

And here is my controller:

class TestXMl(http.Controller):
    @http.route('/xml/download/report', type='http', auth="user")
@serialize_exception
def sale_xml_download(self, model, id, filename=None, **kw):
filename = 'Test%s.xml'%('Test')
records= http.request.env['sale.order'].search([('some_attribute', '=', True)])
if records:
xml_record = http.request.env['sale.order']._xml_download()
else:
xml_record = 'Test'
filename = 'Test%s.xml'%('Test') headers = [
('Content-Type', 'application/xml'),
('Content-Disposition', content_disposition(filename)),
('charset', 'utf-8'),
]
return request.make_response(
xml_record, headers=headers, cookies=None)
But I xml_record is not getting the element tree. It is saying TypeError: 'ElementTree' object is not iterable - - - In this case how we suppose to pass the elementTree. Looking for useful response, thank you in advance
Avatar
Vazgeç
En İyi Yanıt

you directly pass etree object as response data (xml_record). you have to convert it to string before you pass as response data.  ref. etree.tosting(xml_record)

Avatar
Vazgeç
İlgili Gönderiler Cevaplar Görünümler Aktivite
3
Mar 19
3048
1
Oca 19
5632
3
Ara 18
8480
0
Kas 18
5277
0
May 22
2889