[FIX] registry: dependencies of custom fields may not exist

Ignore exceptions when resolving dependencies in that case.
This reimplements a behavior from former versions.

closes odoo/odoo#40300

X-original-commit: 826c86e9ab31963e410887a30326f45bcfadf5ea
Signed-off-by: Christophe Simonis <chs@odoo.com>
This commit is contained in:
Raphael Collet
2019-11-14 17:16:17 +00:00
committed by fw-bot
parent 52d4ada230
commit 03e44375fe
+11 -10
View File
@@ -16,9 +16,8 @@ import threading
import odoo
from .. import SUPERUSER_ID
from odoo.sql_db import TestCursor
from odoo.tools import (assertion_report, config, existing_tables,
lazy_classproperty, lazy_property, table_exists,
topological_sort, OrderedSet)
from odoo.tools import (assertion_report, config, existing_tables, ignore,
lazy_classproperty, lazy_property, OrderedSet)
from odoo.tools.lru import LRU
_logger = logging.getLogger(__name__)
@@ -249,13 +248,15 @@ class Registry(Mapping):
model._setup_fields()
# determine field dependencies
Model = odoo.models.Model
dependencies = {
field: set(field.resolve_depends(model))
for model in models
if isinstance(model, Model)
for field in model._fields.values()
}
dependencies = {}
for model in models:
if model._abstract:
continue
for field in model._fields.values():
# dependencies of custom fields may not exist; ignore that case
exceptions = (Exception,) if field.manual else ()
with ignore(*exceptions):
dependencies[field] = set(field.resolve_depends(model))
# determine transitive dependencies
def transitive_dependencies(field, seen=[]):