[REV] web: return updated list of fields in export template

This reverts commit 46016e33ea from
pull-request #129567, see #134791

closes odoo/odoo#134957

Signed-off-by: Julien Castiaux (juc) <juc@odoo.com>
This commit is contained in:
Julien Castiaux
2023-09-10 11:33:02 +00:00
parent 524dc07d8e
commit 34ecb45e5c
2 changed files with 1 additions and 45 deletions
@@ -6,7 +6,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.export import ExportXlsxWriter
from odoo.addons.mail.tests.common import mail_new_test_user
@@ -392,38 +391,3 @@ class TestGroupedExport(XlsxCreatorCase):
[' 86420.864 (1)','86420.86'],
['1' ,'86420.86'],
])
@mute_logger('odoo.addons.web.controllers.export')
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())
+1 -9
View File
@@ -362,15 +362,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])