diff --git a/addons/account/data/payment_receipt_data.xml b/addons/account/data/payment_receipt_data.xml index 2b15ae5427a..7cfcc760e18 100644 --- a/addons/account/data/payment_receipt_data.xml +++ b/addons/account/data/payment_receipt_data.xml @@ -6,7 +6,7 @@ Print Receipt client_action_multi - + action account.payment diff --git a/addons/account/test/account_report.yml b/addons/account/test/account_report.yml index 7ea73c1dd75..b3ac442aa81 100644 --- a/addons/account/test/account_report.yml +++ b/addons/account/test/account_report.yml @@ -14,9 +14,8 @@ - !python {model: account.invoice, id: False}: | import os - import odoo.report from odoo import tools - data, format = odoo.report.render_report(self.env.cr, self.env.uid, [ref('account.account_invoice_customer0')], 'account.report_invoice', {}, {}) + data, format = ref('account.report_invoice').render(ref('account.account_invoice_customer0')) if tools.config['test_report_directory']: file(os.path.join(tools.config['test_report_directory'], 'account-invoice.'+format), 'wb+').write(data) - @@ -24,9 +23,8 @@ - !python {model: res.partner, id: False}: | import os - import odoo.report from odoo import tools - data, format = odoo.report.render_report(self.env.cr, self.env.uid, [ref('base.res_partner_1'),ref('base.res_partner_2'),ref('base.res_partner_12')], 'account.report_overdue', {}, {}) + data, format = ref('account.report_overdue').render([ref('base.res_partner_1'),ref('base.res_partner_2'),ref('base.res_partner_12')]) if tools.config['test_report_directory']: file(os.path.join(tools.config['test_report_directory'], 'account-report_overdue.'+format), 'wb+').write(data) - diff --git a/addons/account/views/account_report.xml b/addons/account/views/account_report.xml index 9d3e9b215c9..ddf5cb21cb0 100644 --- a/addons/account/views/account_report.xml +++ b/addons/account/views/account_report.xml @@ -13,7 +13,7 @@ attachment="(object.state in ('open','paid')) and ('INV'+(object.number or '').replace('/','')+'.pdf')" /> - + (object.type == 'out_invoice' and object.state == 'draft' and 'Draft Invoice' or object.type == 'out_invoice' and object.state in ('open','paid') and 'Invoice'+'-'+(object.number) or object.type == 'out_refund' and object.state == 'draft' and 'Credit Note' or @@ -33,7 +33,7 @@ file="account.report_invoice_duplicate" attachment_use="False" /> - + (object.type == 'out_invoice' and object.state == 'draft' and 'Duplicate Invoice' or object.type == 'out_invoice' and object.state in ('open','paid') and 'Duplicate Invoice'+'-'+(object.number) or object.type == 'out_refund' and object.state == 'draft' and 'Duplicate Credit Note' or @@ -52,7 +52,7 @@ name="account.report_overdue" file="account.report_overdue" /> - + 'Due Payments'+'-'+(object.name) diff --git a/addons/base_import_module/tests/test_module/test.xml b/addons/base_import_module/tests/test_module/test.xml index 8e3df933e2a..80e24a4293b 100644 --- a/addons/base_import_module/tests/test_module/test.xml +++ b/addons/base_import_module/tests/test_module/test.xml @@ -7,7 +7,7 @@ Hagrid - My Company Tagline + My Company Tagline diff --git a/addons/base_setup/models/res_config.py b/addons/base_setup/models/res_config.py index ceeb7c3bdbf..8db758ccc31 100644 --- a/addons/base_setup/models/res_config.py +++ b/addons/base_setup/models/res_config.py @@ -28,7 +28,7 @@ class BaseConfigSettings(models.TransientModel): " * Checked : Partners are visible for every companies, even if a company is defined on the partner.\n" " * Unchecked : Each company can see only its partner (partners where company is defined). Partners not related to a company are visible for all companies.") default_custom_report_footer = fields.Boolean("Custom Report Footer") - rml_footer = fields.Text(related="company_id.rml_footer", string='Custom Report Footer', help="Footer text displayed at the bottom of all reports.") + report_footer = fields.Text(related="company_id.report_footer", string='Custom Report Footer', help="Footer text displayed at the bottom of all reports.") group_multi_currency = fields.Boolean(string='Allow multi currencies', implied_group='base.group_multi_currency', help="Allows to work in a multi currency environment") diff --git a/addons/event/report/event_event_reports.xml b/addons/event/report/event_event_reports.xml index 2f81b7b0e3b..341d69702c2 100644 --- a/addons/event/report/event_event_reports.xml +++ b/addons/event/report/event_event_reports.xml @@ -25,7 +25,7 @@ name="event.event_registration_report_template_badge" file="event.event_registration_report_template_badge" paperformat="event.paperformat_euro_lowmargin"/> - + 'Registration Event'+'-'+(object.name) diff --git a/addons/hr_attendance/report/hr_employee_badge.xml b/addons/hr_attendance/report/hr_employee_badge.xml index 8da14a63e85..0ee61507e08 100644 --- a/addons/hr_attendance/report/hr_employee_badge.xml +++ b/addons/hr_attendance/report/hr_employee_badge.xml @@ -7,7 +7,7 @@ report_type="qweb-pdf" name="hr_attendance.print_employee_badge" file="hr_attendance.print_employee_badge"/> - + 'Print Badge'+'-'+(object.name) diff --git a/addons/hr_expense/report/report_expense_sheet.xml b/addons/hr_expense/report/report_expense_sheet.xml index e033d7920c1..6511dcbcf0c 100644 --- a/addons/hr_expense/report/report_expense_sheet.xml +++ b/addons/hr_expense/report/report_expense_sheet.xml @@ -106,7 +106,7 @@ name="hr_expense.report_expense_sheet" file="hr_expense.report_expense_sheet" /> - + 'Expenses'+'-'+(object.employee_id.name)+'-'+(object.name) diff --git a/addons/hr_holidays/report/hr_holidays_reports.xml b/addons/hr_holidays/report/hr_holidays_reports.xml index b033dbf3679..bea309eb923 100644 --- a/addons/hr_holidays/report/hr_holidays_reports.xml +++ b/addons/hr_holidays/report/hr_holidays_reports.xml @@ -10,7 +10,7 @@ file="hr_holidays.report_holidayssummary" menu="False"/> - + diff --git a/addons/hr_payroll/tests/test_payslip_flow.py b/addons/hr_payroll/tests/test_payslip_flow.py index 7ab0fad275a..54de80bfbba 100644 --- a/addons/hr_payroll/tests/test_payslip_flow.py +++ b/addons/hr_payroll/tests/test_payslip_flow.py @@ -2,10 +2,7 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. import os -from datetime import datetime -from dateutil.relativedelta import relativedelta -from odoo.report import render_report from odoo.tools import config, test_reports from odoo.addons.hr_payroll.tests.common import TestPayslipBase @@ -72,14 +69,14 @@ class TestPayslipFlow(TestPayslipBase): }) # I print the payslip report - data, format = render_report(self.env.cr, self.env.uid, richard_payslip.ids, 'hr_payroll.report_payslip', {}, {}) + data, data_format = self.env.ref('hr_payroll.action_report_payslip').render(richard_payslip.ids) if config.get('test_report_directory'): - open(os.path.join(config['test_report_directory'], 'hr_payroll-payslip.'+ format), 'wb+').write(data) + open(os.path.join(config['test_report_directory'], 'hr_payroll-payslip.'+ data_format), 'wb+').write(data) # I print the payslip details report - data, format = render_report(self.env.cr, self.env.uid, richard_payslip.ids, 'hr_payroll.report_payslipdetails', {}, {}) + data, data_format = self.env.ref('hr_payroll.payslip_details_report').render(richard_payslip.ids) if config.get('test_report_directory'): - open(os.path.join(config['test_report_directory'], 'hr_payroll-payslipdetails.'+ format), 'wb+').write(data) + open(os.path.join(config['test_report_directory'], 'hr_payroll-payslipdetails.'+ data_format), 'wb+').write(data) # I print the contribution register report context = {'model': 'hr.contribution.register', 'active_ids': [self.ref('hr_payroll.hr_houserent_register')]} diff --git a/addons/hr_payroll/views/hr_payroll_report.xml b/addons/hr_payroll/views/hr_payroll_report.xml index c6e02324f0a..6b1e8a94637 100644 --- a/addons/hr_payroll/views/hr_payroll_report.xml +++ b/addons/hr_payroll/views/hr_payroll_report.xml @@ -17,7 +17,7 @@ name="hr_payroll.report_payslip" file="hr_payroll.report_payslip" /> - + (object.employee_id.name)+'-'+'Payslip' - + (object.name) diff --git a/addons/l10n_ca/data/res_company_data.xml b/addons/l10n_ca/data/res_company_data.xml index 11adcbd01d4..fdc19388202 100644 --- a/addons/l10n_ca/data/res_company_data.xml +++ b/addons/l10n_ca/data/res_company_data.xml @@ -1,7 +1,6 @@ - us_letter diff --git a/addons/l10n_ch/report/isr_report.xml b/addons/l10n_ch/report/isr_report.xml index 23ff2f70758..1cabbd8c056 100644 --- a/addons/l10n_ch/report/isr_report.xml +++ b/addons/l10n_ch/report/isr_report.xml @@ -27,7 +27,7 @@ menu="False" /> - + 'ISR-' + object.number - + Invoice pos.order qweb-pdf @@ -18,7 +18,7 @@ 'Invoice'+'-'+(object.name) - + Sales Details report.point_of_sale.details qweb-pdf diff --git a/addons/product/report/product_reports.xml b/addons/product/report/product_reports.xml index 2c7a58336d0..0e48f95aa27 100644 --- a/addons/product/report/product_reports.xml +++ b/addons/product/report/product_reports.xml @@ -8,7 +8,7 @@ report_type="qweb-pdf" name="product.report_productlabel" file="product.report_productlabel"/> - + 'Products Labels'+'-'+(object.name) @@ -19,7 +19,7 @@ report_type="qweb-pdf" name="product.report_producttemplatelabel" file="product.report_producttemplatelabel"/> - + 'Products Labels'+'-'+(object.name) diff --git a/addons/purchase/report/purchase_reports.xml b/addons/purchase/report/purchase_reports.xml index a266c4d0147..33524f2342c 100644 --- a/addons/purchase/report/purchase_reports.xml +++ b/addons/purchase/report/purchase_reports.xml @@ -8,7 +8,7 @@ name="purchase.report_purchaseorder" file="purchase.report_purchaseorder" /> - + (object.state in ('draft', 'sent') and 'Request for Quotation'+'-'+(object.name) or 'Purchase Order'+'-'+(object.name)) @@ -20,7 +20,7 @@ name="purchase.report_purchasequotation" file="purchase.report_purchasequotation" /> - + 'Request for Quotation'+'-'+(object.name) diff --git a/addons/purchase_requisition/report/purchase_requisition_report.xml b/addons/purchase_requisition/report/purchase_requisition_report.xml index 98b73254c11..0870c38afb0 100644 --- a/addons/purchase_requisition/report/purchase_requisition_report.xml +++ b/addons/purchase_requisition/report/purchase_requisition_report.xml @@ -9,7 +9,7 @@ name="purchase_requisition.report_purchaserequisitions" file="purchase_requisition.report.report_purchaserequisitions" /> - + 'Tender'+'-'+(object.name) diff --git a/addons/report/controllers/main.py b/addons/report/controllers/main.py index 7e0fd9f8123..43771252ccb 100644 --- a/addons/report/controllers/main.py +++ b/addons/report/controllers/main.py @@ -110,11 +110,6 @@ class ReportController(Controller): response.headers.add('Content-Disposition', content_disposition(filename)) response.set_cookie('fileToken', token) return response - elif type == 'controller': - reqheaders = Headers(request.httprequest.headers) - response = Client(request.httprequest.app, BaseResponse).get(url, headers=reqheaders, follow_redirects=True) - response.set_cookie('fileToken', token) - return response else: return except Exception as e: diff --git a/addons/report/models/__init__.py b/addons/report/models/__init__.py index c983832539e..5e9033225cf 100644 --- a/addons/report/models/__init__.py +++ b/addons/report/models/__init__.py @@ -3,7 +3,7 @@ from . import abstract_report from . import base_config_settings -from . import ir_actions_report_xml +from . import ir_actions_report from . import ir_http from . import ir_qweb from . import report diff --git a/addons/report/models/ir_actions_report_xml.py b/addons/report/models/ir_actions_report.py similarity index 87% rename from addons/report/models/ir_actions_report_xml.py rename to addons/report/models/ir_actions_report.py index 8461815e389..cc46523c0b2 100644 --- a/addons/report/models/ir_actions_report_xml.py +++ b/addons/report/models/ir_actions_report.py @@ -4,7 +4,7 @@ from odoo import api, fields, models class ir_actions_report(models.Model): - _inherit = 'ir.actions.report.xml' + _inherit = 'ir.actions.report' paperformat_id = fields.Many2one('report.paperformat', 'Paper format') print_report_name = fields.Char('Printed Report Name', @@ -12,7 +12,7 @@ class ir_actions_report(models.Model): @api.multi def associated_view(self): - """Used in the ir.actions.report.xml form view in order to search naively after the view(s) + """Used in the ir.actions.report form view in order to search naively after the view(s) used in the rendering. """ self.ensure_one() diff --git a/addons/report/models/report.py b/addons/report/models/report.py index 55abb28a638..b581bf0a613 100644 --- a/addons/report/models/report.py +++ b/addons/report/models/report.py @@ -186,7 +186,7 @@ class Report(models.Model): html = html.decode('utf-8') # Ensure the current document is utf-8 encoded. - # Get the ir.actions.report.xml record we are working on. + # Get the ir.actions.report record we are working on. report = self._get_report_from_name(report_name) # Check if we have to save the report or if we have to get one from the db. save_in_attachment = self._check_attachment_use(docids, report) @@ -267,7 +267,7 @@ class Report(models.Model): @api.noguess def get_action(self, docids, report_name, data=None, config=True): - """Return an action of type ir.actions.report.xml. + """Return an action of type ir.actions.report. :param docids: id/ids/browserecord of the records to print (if not used, pass an empty list) :param report_name: Name of the template to generate an action for @@ -297,14 +297,14 @@ class Report(models.Model): active_ids = docids context = dict(self.env.context, active_ids=active_ids) - report = self.env['ir.actions.report.xml'].with_context(context).search([('report_name', '=', report_name)]) + report = self.env['ir.actions.report'].with_context(context).search([('report_name', '=', report_name)]) if not report: raise UserError(_("Bad Report Reference") + _("This report is not loaded into the database: %s.") % report_name) return { 'context': context, 'data': data, - 'type': 'ir.actions.report.xml', + 'type': 'ir.actions.report', 'report_name': report.report_name, 'report_type': report.report_type, 'report_file': report.report_file, @@ -515,10 +515,10 @@ class Report(models.Model): @api.model def _get_report_from_name(self, report_name): - """Get the first record of ir.actions.report.xml having the ``report_name`` as value for + """Get the first record of ir.actions.report having the ``report_name`` as value for the field report_name. """ - report_obj = self.env['ir.actions.report.xml'] + report_obj = self.env['ir.actions.report'] qwebtypes = ['qweb-pdf', 'qweb-html'] conditions = [('report_type', 'in', qwebtypes), ('report_name', '=', report_name)] context = self.env['res.users'].context_get() diff --git a/addons/report/models/report_paperformat.py b/addons/report/models/report_paperformat.py index a97a1dfd3e0..08235f3060b 100644 --- a/addons/report/models/report_paperformat.py +++ b/addons/report/models/report_paperformat.py @@ -60,7 +60,7 @@ class report_paperformat(models.Model): header_line = fields.Boolean('Display a header line', default=False) header_spacing = fields.Integer('Header spacing', default=35) dpi = fields.Integer('Output DPI', required=True, default=90) - report_ids = fields.One2many('ir.actions.report.xml', 'paperformat_id', 'Associated reports', help="Explicitly associated reports") + report_ids = fields.One2many('ir.actions.report', 'paperformat_id', 'Associated reports', help="Explicitly associated reports") @api.constrains('format') def _check_format_or_page(self): diff --git a/addons/report/models/res_company.py b/addons/report/models/res_company.py index 85683e6edc1..61fa63fea86 100644 --- a/addons/report/models/res_company.py +++ b/addons/report/models/res_company.py @@ -29,17 +29,10 @@ class ResCompany(models.Model): @api.model_cr def init(self): - # set a default paperformat based on rml one. for company in self.search([('paperformat_id', '=', False)]): paperformat_euro = self.env.ref('report.paperformat_euro', False) - paperformat_us = self.env.ref('report.paperformat_us', False) - paperformat_id = { - 'a4': paperformat_euro and paperformat_euro.id or False, - 'us_letter': paperformat_us and paperformat_us.id or False, - }.get(company.rml_paper_format) or paperformat_euro - - if paperformat_id: - company.write({'paperformat_id': paperformat_id}) + if paperformat_euro: + company.write({'paperformat_id': paperformat_euro.id}) sup = super(ResCompany, self) if hasattr(sup, 'init'): diff --git a/addons/report/static/src/js/client_action.js b/addons/report/static/src/js/client_action.js index 041a7af383b..60265c0a49d 100644 --- a/addons/report/static/src/js/client_action.js +++ b/addons/report/static/src/js/client_action.js @@ -180,7 +180,7 @@ var ReportAction = Widget.extend(ControlPanelMixin, { on_click_print: function () { var action = { - 'type': 'ir.actions.report.xml', + 'type': 'ir.actions.report', 'report_type': 'qweb-pdf', 'report_name': this.report_name, 'report_file': this.report_file, diff --git a/addons/report/static/src/js/qwebactionmanager.js b/addons/report/static/src/js/qwebactionmanager.js index 3f477bf7d16..3c8fee859e3 100644 --- a/addons/report/static/src/js/qwebactionmanager.js +++ b/addons/report/static/src/js/qwebactionmanager.js @@ -44,7 +44,6 @@ var make_report_url = function (action) { var report_urls = { 'qweb-html': '/report/html/' + action.report_name, 'qweb-pdf': '/report/pdf/' + action.report_name, - 'controller': action.report_file, }; // We may have to build a query string with `action.data`. It's the place // were report's using a wizard to customize the output traditionally put @@ -69,7 +68,7 @@ var make_report_url = function (action) { }; ActionManager.include({ - ir_actions_report_xml: function (action, options) { + ir_actions_report: function (action, options) { var self = this; action = _.clone(action); @@ -132,14 +131,6 @@ ActionManager.include({ return self.do_action('report.client_action', client_action_options); } }); - } else if (action.report_type === 'controller') { - framework.blockUI(); - var response = [ - report_urls.controller, - action.report_type, - ]; - var c = crash_manager; - return trigger_download(self.getSession(), response, c, action, options); } else { return self._super(action, options); } diff --git a/addons/report/tests/test_reports.py b/addons/report/tests/test_reports.py index d1e85494f48..9995067fdec 100644 --- a/addons/report/tests/test_reports.py +++ b/addons/report/tests/test_reports.py @@ -14,7 +14,7 @@ _logger = logging.getLogger(__name__) class TestReports(odoo.tests.TransactionCase): def test_reports(self): domain = [('report_type', 'like', 'qweb')] - for report in self.env['ir.actions.report.xml'].search(domain): + for report in self.env['ir.actions.report'].search(domain): report_model = 'report.%s' % report.report_name try: self.env[report_model] diff --git a/addons/report/views/ir_actions_report_views.xml b/addons/report/views/ir_actions_report_views.xml index d0202203b76..7b52158a047 100644 --- a/addons/report/views/ir_actions_report_views.xml +++ b/addons/report/views/ir_actions_report_views.xml @@ -2,9 +2,9 @@ - ir.actions.report.xml.form.inherit + ir.actions.report.form.inherit - ir.actions.report.xml + ir.actions.report @@ -18,7 +18,7 @@ act_report_xml_view_inherit - ir.actions.report.xml + ir.actions.report diff --git a/addons/report/views/report_paperformat_views.xml b/addons/report/views/report_paperformat_views.xml index 433ed8cc304..2141f63b914 100644 --- a/addons/report/views/report_paperformat_views.xml +++ b/addons/report/views/report_paperformat_views.xml @@ -42,7 +42,7 @@ Reports - ir.actions.report.xml + ir.actions.report form tree,form diff --git a/addons/report/views/templates.xml b/addons/report/views/templates.xml index c9f6f6157b4..667013df74f 100644 --- a/addons/report/views/templates.xml +++ b/addons/report/views/templates.xml @@ -138,7 +138,7 @@