From c998143934dfbe2159d2d3d15cf207ddb2b3f671 Mon Sep 17 00:00:00 2001 From: Julien Castiaux <juc@odoo.com> Date: Sun, 10 Sep 2023 11:30:44 +0200 Subject: [PATCH] [REV] web: return updated list of fields in export template This reverts commit 7b635c000556bafdc76152ab281ea484d90d7394 from pull-request #129567, see #134791 closes odoo/odoo#134950 Signed-off-by: Julien Castiaux (juc) <juc@odoo.com> --- addons/test_xlsx_export/tests/test_export.py | 36 -------------------- addons/web/controllers/main.py | 10 +----- 2 files changed, 1 insertion(+), 45 deletions(-) diff --git a/addons/test_xlsx_export/tests/test_export.py b/addons/test_xlsx_export/tests/test_export.py index 4d253b332d6d..c676dca3ca8a 100644 --- a/addons/test_xlsx_export/tests/test_export.py +++ b/addons/test_xlsx_export/tests/test_export.py @@ -7,7 +7,6 @@ from unittest.mock import patch from odoo import http from odoo.tests import common, tagged -from odoo.tools import mute_logger from odoo.tools.misc import get_lang from odoo.addons.web.controllers.main import ExportXlsxWriter from odoo.addons.mail.tests.common import mail_new_test_user @@ -394,38 +393,3 @@ class TestGroupedExport(XlsxCreatorCase): [' 86420.864 (1)','86420.86'], ['1' ,'86420.86'], ]) - - @mute_logger('odoo.addons.web.controllers.main') - def test_export_with_deleted_field(self): - model = self.env['ir.model']._get('res.partner') - url = '/web/export/namelist' - header = {"Content-Type": "application/json"} - - custom_field = self.env['ir.model.fields'].create([{ - 'name': 'x_test', - 'ttype': 'char', - 'field_description': 'test field', - 'model_id': model.id, - }]) - - export_template = self.env['ir.exports'].create({ - 'name': custom_field.name, - 'export_fields': [(0, 0, {'name': custom_field.name})], - }) - - data = json.dumps({ - 'params': { - 'model': model.model, - 'export_id': export_template.id, - }, - }) - - export_line_field = self.env['ir.exports.line'].search([('name', '=', export_template.name)]) - - self.url_open(url, data, headers=header).json() - self.assertTrue(export_line_field.exists()) - - custom_field.unlink() - - self.url_open(url, data, headers=header).json() - self.assertFalse(export_line_field.exists()) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 93d6e5209e83..bfeb39ddf620 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1690,15 +1690,7 @@ class Export(http.Controller): def namelist(self, model, export_id): # TODO: namelist really has no reason to be in Python (although itertools.groupby helps) export = request.env['ir.exports'].browse([export_id]).read()[0] - exported_fields = request.env['ir.exports.line'].browse(export['export_fields']) - fields = self.fields_get(model) - - for invalid_fields in exported_fields.filtered(lambda f: f.name not in fields): - # ir.exports.line lack a ondelete=cascade foreign key on ir.model.fields - _logger.warning("Field %r not found for saved ir.exports of model %s, deleting", invalid_fields.name, model) - invalid_fields.unlink() - - export_fields_list = exported_fields.read() + export_fields_list = request.env['ir.exports.line'].browse(export['export_fields']).read() fields_data = self.fields_info( model, [f['name'] for f in export_fields_list]) -- GitLab