diff --git a/odoo/modules/registry.py b/odoo/modules/registry.py index 8ceeb74e4ac..19124738624 100644 --- a/odoo/modules/registry.py +++ b/odoo/modules/registry.py @@ -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=[]):