[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:
+11
-10
@@ -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=[]):
|
||||
|
||||
Reference in New Issue
Block a user