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