diff --git a/report_csv/__manifest__.py b/report_csv/__manifest__.py index 76e7bc8a0..6adf30c28 100644 --- a/report_csv/__manifest__.py +++ b/report_csv/__manifest__.py @@ -4,11 +4,10 @@ "name": "Base report csv", "summary": "Base module to create csv report", "author": "Creu Blanca, Odoo Community Association (OCA)", - "website": "https://github.com/oca/reporting-engine", + "website": "https://github.com/OCA/reporting-engine", "category": "Reporting", - "version": "13.0.1.0.1", + "version": "14.0.1.0.0", "license": "AGPL-3", - "external_dependencies": {"python": ["csv"]}, "depends": ["base", "web"], "data": ["views/webclient_templates.xml"], "demo": ["demo/report.xml"], diff --git a/report_csv/controllers/main.py b/report_csv/controllers/main.py index 700a75a56..f6bae5979 100644 --- a/report_csv/controllers/main.py +++ b/report_csv/controllers/main.py @@ -2,7 +2,6 @@ # License AGPL-3.0 or later (https://www.gnuorg/licenses/agpl.html). import json -import time from odoo.http import content_disposition, request, route from odoo.tools.safe_eval import safe_eval @@ -28,14 +27,14 @@ class ReportController(report.ReportController): if data["context"].get("lang"): del data["context"]["lang"] context.update(data["context"]) - csv = report.with_context(context).render_csv(docids, data=data)[0] + csv = report.with_context(context)._render_csv(docids, data=data)[0] filename = "{}.{}".format(report.name, "csv") if docids: obj = request.env[report.model].browse(docids) if report.print_report_name and not len(obj) > 1: report_name = safe_eval( report.print_report_name, - {"object": obj, "time": time, "multi": False}, + {"object": obj}, ) filename = "{}.{}".format(report_name, "csv") # When we print multiple records we still allow a custom @@ -43,7 +42,7 @@ class ReportController(report.ReportController): elif report.print_report_name and len(obj) > 1: report_name = safe_eval( report.print_report_name, - {"objects": obj, "time": time, "multi": True}, + {"object": obj}, ) filename = "{}.{}".format(report_name, "csv") csvhttpheaders = [ diff --git a/report_csv/demo/report.xml b/report_csv/demo/report.xml index 72c741dec..1bab560ac 100644 --- a/report_csv/demo/report.xml +++ b/report_csv/demo/report.xml @@ -4,13 +4,11 @@ Copyright 2019 Creu Blanca License AGPL-3.0 or later (https://www.gnuorg/licenses/agpl.html). --> - + + Print to CSV + res.partner + csv + report_csv.partner_csv + res_partner + diff --git a/report_csv/models/ir_report.py b/report_csv/models/ir_report.py index 9865cff75..97e8f3a8e 100644 --- a/report_csv/models/ir_report.py +++ b/report_csv/models/ir_report.py @@ -8,10 +8,12 @@ from odoo.exceptions import UserError class ReportAction(models.Model): _inherit = "ir.actions.report" - report_type = fields.Selection(selection_add=[("csv", "csv")]) + report_type = fields.Selection( + selection_add=[("csv", "csv")], ondelete={"csv": "set default"} + ) @api.model - def render_csv(self, docids, data): + def _render_csv(self, docids, data): report_model_name = "report.%s" % self.report_name report_model = self.env.get(report_model_name) if report_model is None: diff --git a/report_csv/tests/test_report.py b/report_csv/tests/test_report.py index 32239262f..cfaccc4ea 100644 --- a/report_csv/tests/test_report.py +++ b/report_csv/tests/test_report.py @@ -25,10 +25,9 @@ class TestReport(common.TransactionCase): def test_report(self): # Test if not res: - self.env["ir.actions.report"]._get_report_from_name("TEST") report = self.report self.assertEqual(report.report_type, "csv") - rep = report.render(self.docs.ids, {}) + rep = report._render(self.docs.ids, {}) str_io = StringIO(rep[0]) dict_report = list(csv.DictReader(str_io, delimiter=";", quoting=csv.QUOTE_ALL)) self.assertEqual(self.docs.name, dict(dict_report[0])["name"]) @@ -39,20 +38,20 @@ class TestReport(common.TransactionCase): objs = self.csv_report._get_objs_for_report( False, {"context": {"active_ids": self.docs.ids}} ) - self.assertEquals(objs, self.docs) + self.assertEqual(objs, self.docs) # Typical call from within code not to report_action objs = self.csv_report.with_context( active_ids=self.docs.ids )._get_objs_for_report(False, False) - self.assertEquals(objs, self.docs) + self.assertEqual(objs, self.docs) # Typical call from WebUI objs = self.csv_report._get_objs_for_report( self.docs.ids, {"data": [self.report_name, self.report.report_type]} ) - self.assertEquals(objs, self.docs) + self.assertEqual(objs, self.docs) # Typical call from render objs = self.csv_report._get_objs_for_report(self.docs.ids, {}) - self.assertEquals(objs, self.docs) + self.assertEqual(objs, self.docs) diff --git a/setup/report_csv/odoo/addons/report_csv b/setup/report_csv/odoo/addons/report_csv new file mode 120000 index 000000000..bdfab6f25 --- /dev/null +++ b/setup/report_csv/odoo/addons/report_csv @@ -0,0 +1 @@ +../../../../report_csv \ No newline at end of file diff --git a/setup/report_csv/setup.py b/setup/report_csv/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/report_csv/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)