oca-technical/odoo-bringout-oca-rest-framework-model_serializer/model_serializer/builder.py
2025-08-29 15:43:03 +02:00

24 lines
1,005 B
Python

from odoo import models
from odoo.addons.datamodel.core import MetaDatamodel, _datamodel_databases
from .core import ModelSerializer
class DatamodelBuilder(models.AbstractModel):
_inherit = "datamodel.builder"
def load_datamodels(self, module, datamodels_registry=None):
res = super().load_datamodels(module, datamodels_registry=datamodels_registry)
datamodels_registry = (
datamodels_registry or _datamodel_databases[self.env.cr.dbname]
)
for datamodel_class in MetaDatamodel._modules_datamodels[module]:
self._extend_model_serializer(datamodel_class, datamodels_registry)
return res
def _extend_model_serializer(self, datamodel_class, registry):
"""Extend the datamodel_class with the fields declared in `_model_fields`"""
if issubclass(datamodel_class, ModelSerializer):
new_class = datamodel_class._extend_from_odoo_model(registry, self.env)
new_class._build_datamodel(registry)