From e10111594ea7cca925016731626f11e411696c10 Mon Sep 17 00:00:00 2001 From: Archana Vaghasiya Date: Wed, 31 May 2023 05:55:52 +0000 Subject: [PATCH] [FIX] service: prevent traceback when field value is none When the value of fields is getting None. And no value is assigned to the `field`. So the traceback will be generated. In this commit, we will assign a default value to the field if the field gets a None value. So that it won't get a None value in any case. sentry-4211843089 closes odoo/odoo#123193 X-original-commit: 3e652808305d3ef4674963195f3c7cdf91b37654 Signed-off-by: Julien Castiaux (juc) Signed-off-by: Archana Vaghasiya (arva) --- odoo/service/model.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/odoo/service/model.py b/odoo/service/model.py index a4b46f96016..dcb6acaed92 100644 --- a/odoo/service/model.py +++ b/odoo/service/model.py @@ -72,14 +72,13 @@ def _as_validation_error(env, exc): """ Return the IntegrityError encapsuled in a nice ValidationError """ unknown = _('Unknown') + model = DotDict({'_name': unknown.lower(), '_description': unknown}) + field = DotDict({'name': unknown.lower(), 'string': unknown}) for _name, rclass in env.registry.items(): if exc.diag.table_name == rclass._table: model = rclass - field = model._fields.get(exc.diag.column_name) + field = model._fields.get(exc.diag.column_name) or field break - else: - model = DotDict({'_name': unknown.lower(), '_description': unknown}) - field = DotDict({'name': unknown.lower(), 'string': unknown}) if exc.pgcode == errorcodes.NOT_NULL_VIOLATION: return ValidationError(_(