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 * 2Traceback
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