mirror of
https://github.com/OCA/reporting-engine.git
synced 2025-02-16 16:30:38 +02:00
Adds a way to choose the file extension for your XML file, by adding the flexibility of appending more choices. For example, instead of getting `.xml`, this allows to have the report download as `.svg` or even good old `.html` if needed. This is also very useful for some localization purposes, where some scarce software uses uncommon file extensions for their XML files, like `.ffdata` for specific accounting reports here in Lithuania. The change is not breaking, as we set the default to be `.xml` like it was by default anyway.
48 lines
1.8 KiB
Python
48 lines
1.8 KiB
Python
# Copyright 2017 Creu Blanca
|
|
# License AGPL-3.0 or later (https://www.gnuorg/licenses/agpl).
|
|
|
|
import json
|
|
|
|
from lxml import etree
|
|
|
|
from odoo import http
|
|
from odoo.tests import common
|
|
|
|
|
|
class TestXmlReport(common.HttpCase):
|
|
def test_xml(self):
|
|
report_object = self.env["ir.actions.report"]
|
|
report_name = "report_xml.demo_report_xml_view"
|
|
report = report_object._get_report_from_name(report_name)
|
|
docs = self.env["res.company"].search([], limit=1)
|
|
self.assertEqual(report.report_type, "qweb-xml")
|
|
result_report = report_object._render(report_name, docs.ids, {})
|
|
result_tree = etree.fromstring(result_report[0])
|
|
el = result_tree.xpath("/root/user/name")
|
|
self.assertEqual(el[0].text, docs.ensure_one().name)
|
|
|
|
def test_xml_extension(self):
|
|
self.authenticate("admin", "admin")
|
|
report_object = self.env["ir.actions.report"]
|
|
report_name = "report_xml.demo_report_xml_view"
|
|
report = report_object._get_report(report_name)
|
|
# Test changing report to use ".svg" extension
|
|
report.write({"xml_extension": "svg"})
|
|
filename = self.get_report_headers().headers.get("Content-Disposition")
|
|
self.assertTrue(".svg" in filename)
|
|
# Test changing report to use ".ffdata" extension
|
|
report.write({"xml_extension": "ffdata"})
|
|
filename = self.get_report_headers().headers.get("Content-Disposition")
|
|
self.assertTrue(".ffdata" in filename)
|
|
|
|
def get_report_headers(self):
|
|
return self.url_open(
|
|
url="/report/download",
|
|
data={
|
|
"data": json.dumps(
|
|
["/report/xml/report_xml.demo_report_xml_view/1", "qweb-xml"]
|
|
),
|
|
"csrf_token": http.Request.csrf_token(self),
|
|
},
|
|
)
|