I'm getting an error whenever I try to save set up a computed field in odoo 14 Enterprise Edition.
This happens for every field I try to compute, no matter how simple the script is.
Any ideas, why this happens?
Example
model: stock.move.line
dependencies: qty_done
code:
for record in self:
record['x_qty_done_new'] = record.qty_done * 2
Traceback
Error: Odoo Server Error Traceback (most recent call last): File "/home/odoo/src/odoo/14.0/odoo/addons/base/models/ir_http.py", line 237, in _dispatch result = request.dispatch() File "/home/odoo/src/odoo/14.0/odoo/http.py", line 682, in dispatch result = self._call_function(**self.params) File "/home/odoo/src/odoo/14.0/odoo/http.py", line 358, in _call_function return checked_call(self.db, *args, **kwargs) File "/home/odoo/src/odoo/14.0/odoo/service/model.py", line 94, in wrapper return f(dbname, *args, **kwargs) File "/home/odoo/src/odoo/14.0/odoo/http.py", line 346, in checked_call result = self.endpoint(*a, **kw) File "/home/odoo/src/odoo/14.0/odoo/http.py", line 911, in __call__ return self.method(*args, **kw) File "/home/odoo/src/odoo/14.0/odoo/http.py", line 530, in response_wrap response = f(*args, **kw) File "/home/odoo/src/odoo/14.0/addons/web/controllers/main.py", line 1359, in call_kw return self._call_kw(model, method, args, kwargs) File "/home/odoo/src/odoo/14.0/addons/web/controllers/main.py", line 1351, in _call_kw return call_kw(request.env[model], method, args, kwargs) File "/home/odoo/src/odoo/14.0/odoo/api.py", line 396, in call_kw result = _call_kw_multi(method, model, args, kwargs) File "/home/odoo/src/odoo/14.0/odoo/api.py", line 383, in _call_kw_multi result = method(recs, *args, **kwargs) File "/home/odoo/src/enterprise/14.0/web_studio/models/studio_mixin.py", line 28, in write res = super(StudioMixin, self).write(vals) File "/home/odoo/src/odoo/14.0/addons/mail/models/ir_model.py", line 85, in write res = super(IrModel, self).write(vals) File "/home/odoo/src/odoo/14.0/odoo/addons/base/models/ir_model.py", line 319, in write res = super(IrModel, self).write(vals) File "/home/odoo/src/odoo/14.0/odoo/models.py", line 3627, in write field.write(self, vals[fname]) File "/home/odoo/src/odoo/14.0/odoo/fields.py", line 2964, in write return self.write_batch([(records, value)]) File "/home/odoo/src/odoo/14.0/odoo/fields.py", line 2985, in write_batch return self.write_real(records_commands_list, create) File "/home/odoo/src/odoo/14.0/odoo/fields.py", line 3157, in write_real flush() File "/home/odoo/src/odoo/14.0/odoo/fields.py", line 3121, in flush comodel.create(to_create) File "<decorator-gen-177>", line 2, in create File "/home/odoo/src/odoo/14.0/odoo/api.py", line 326, in _model_create_single return self.browse().concat(*(create(self, vals) for vals in arg)) File "/home/odoo/src/odoo/14.0/odoo/api.py", line 326, in <genexpr> return self.browse().concat(*(create(self, vals) for vals in arg)) File "/home/odoo/src/enterprise/14.0/web_studio/models/studio_mixin.py", line 19, in create res = super(StudioMixin, self).create(vals) File "<decorator-gen-29>", line 2, in create File "/home/odoo/src/odoo/14.0/odoo/api.py", line 323, in _model_create_single return create(self, arg) File "/home/odoo/src/odoo/14.0/odoo/addons/base/models/ir_model.py", line 880, in create self.pool.init_models(self._cr, models, dict(self._context, update_custom_fields=True)) File "/home/odoo/src/odoo/14.0/odoo/modules/registry.py", line 406, in init_models env['base'].flush() File "/home/odoo/src/odoo/14.0/odoo/models.py", line 5390, in flush self.recompute() File "/home/odoo/src/odoo/14.0/odoo/models.py", line 5825, in recompute process(field) File "/home/odoo/src/odoo/14.0/odoo/models.py", line 5809, in process recs.mapped(field.name) File "/home/odoo/src/odoo/14.0/odoo/models.py", line 5197, in mapped recs = recs._fields[name].mapped(recs) File "/home/odoo/src/odoo/14.0/odoo/fields.py", line 1036, in mapped self.__get__(record, type(records)) File "/home/odoo/src/odoo/14.0/odoo/fields.py", line 938, in __get__ self.compute_value(recs) File "/home/odoo/src/odoo/14.0/odoo/fields.py", line 1112, in compute_value records._compute_field_value(self) File "/home/odoo/src/odoo/14.0/odoo/models.py", line 4022, in _compute_field_value field.compute(self) File "/home/odoo/src/odoo/14.0/odoo/addons/base/models/ir_model.py", line 35, in <lambda> func = lambda self: safe_eval(text, SAFE_EVAL_BASE, {'self': self}, mode="exec") File "/home/odoo/src/odoo/14.0/odoo/tools/safe_eval.py", line 310, in safe_eval check_values(globals_dict) File "/home/odoo/src/odoo/14.0/odoo/tools/safe_eval.py", line 364, in check_values raise TypeError(f"""Module {v} can not be used in evaluation contexts Exception The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/home/odoo/src/odoo/14.0/odoo/http.py", line 638, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "/home/odoo/src/odoo/14.0/odoo/http.py", line 314, in _handle_exception raise exception.with_traceback(None) from new_cause TypeError: Module <module 'time' (built-in)> can not be used in evaluation contexts Prefer providing only the items necessary for your intended use. If a "module" is necessary for backwards compatibility, use `odoo.tools.safe_eval.wrap_module` to generate a wrapper recursively whitelisting allowed attributes. Pre-wrapped modules are provided as attributes of `odoo.tools.safe_eval`.
It has already been resolved in https://github.com/odoo/odoo/commit/02e816877ec12471a1446ba894b5cfca309979da