server-ux/default_multi_user/hooks.py
2021-03-23 20:15:27 +01:00

33 lines
1.1 KiB
Python

# Copyright 2020 ForgeFlow S.L.
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
import json
from flectra import api, tools
from flectra.addons.base.models.ir_default import IrDefault
def post_load_hook():
@api.model
@tools.ormcache("self.env.uid", "model_name", "condition")
def new_get_model_defaults(self, model_name, condition=False):
if not hasattr(self, "_get_model_defaults_query_and_params"):
return self.get_model_defaults_original(model_name, condition=condition)
cr = self.env.cr
# START OF CHANGES
query, params = self._get_model_defaults_query_and_params(model_name, condition)
# END OF CHANGES
cr.execute(query, params)
result = {}
for row in cr.fetchall():
# keep the highest priority default for each field
if row[0] not in result:
result[row[0]] = json.loads(row[1])
return result
if not hasattr(IrDefault, "get_model_defaults_original"):
IrDefault.get_model_defaults_original = IrDefault.get_model_defaults
IrDefault._patch_method("get_model_defaults", new_get_model_defaults)