This question has been flagged
2 Replies
10554 Views

Hi I get this error, how can I fix this?

ERROR  odoo.http: Exception during JSON request handling.
Traceback (most recent call last):
File "/home/odoo/src/odoo/odoo/addons/base/models/ir_http.py", line 237, in _dispatch
result = request.dispatch()
File "/home/odoo/src/odoo/odoo/http.py", line 683, in dispatch
result = self._call_function(**self.params)
File "/home/odoo/src/odoo/odoo/http.py", line 359, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/odoo/src/odoo/odoo/service/model.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
File "/home/odoo/src/odoo/odoo/http.py", line 347, in checked_call
result = self.endpoint(*a, **kw)
File "/home/odoo/src/odoo/odoo/http.py", line 912, in __call__
return self.method(*args, **kw)
File "/home/odoo/src/odoo/odoo/http.py", line 531, in response_wrap
response = f(*args, **kw)
File "/home/odoo/src/odoo/addons/web/controllers/main.py", line 1381, in call_button
action = self._call_kw(model, method, args, kwargs)
File "/home/odoo/src/odoo/addons/web/controllers/main.py", line 1369, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/home/odoo/src/odoo/odoo/api.py", line 396, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/home/odoo/src/odoo/odoo/api.py", line 383, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "<decorator-gen-71>", line 2, in button_immediate_install
File "/home/odoo/src/odoo/odoo/addons/base/models/ir_module.py", line 73, in check_and_log
return method(self, *args, **kwargs)
File "/home/odoo/src/odoo/odoo/addons/base/models/ir_module.py", line 474, in button_immediate_install
return self._button_immediate_function(type(self).button_install)
File "/home/odoo/src/odoo/odoo/addons/base/models/ir_module.py", line 592, in _button_immediate_function
modules.registry.Registry.new(self._cr.dbname, update_module=True)
File "/home/odoo/src/odoo/odoo/modules/registry.py", line 89, in new
odoo.modules.load_modules(registry._db, force_demo, status, update_module)
File "/home/odoo/src/odoo/odoo/modules/loading.py", line 453, in load_modules
processed_modules += load_marked_modules(cr, graph,
File "/home/odoo/src/odoo/odoo/modules/loading.py", line 346, in load_marked_modules
loaded, processed = load_module_graph(
File "/home/odoo/src/odoo/odoo/modules/loading.py", line 197, in load_module_graph
registry.setup_models(cr)
File "/home/odoo/src/odoo/odoo/modules/registry.py", line 273, in setup_models
model._setup_base()
File "/home/odoo/src/odoo/odoo/models.py", line 2787, in _setup_base
self._add_field(name, field.new())
File "/home/odoo/src/odoo/odoo/models.py", line 404, in _add_field
field.setup_base(self, name)
File "/home/odoo/src/odoo/odoo/fields.py", line 278, in setup_base
self._setup_attrs(model, name)
File "/home/odoo/src/odoo/odoo/fields.py", line 2318, in _setup_attrs
ondelete.setdefault(key, 'set null')
Exception

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/home/odoo/src/odoo/odoo/http.py", line 639, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/odoo/src/odoo/odoo/http.py", line 315, in _handle_exception
raise exception.with_traceback(None) from new_cause
AttributeError: 'str' object has no attribute 'setdefault'

Avatar
Discard

Nice if you can add more details like when you get it, is there any custom codes added, if so relevant parts of code in the question etc

Best Answer

Hi @Bouke Steemers,

I've fixed the issue, you can find the details below. In my case, I was facing the same error for the last two days while upgrading the mis_builder_budget module from version 13 to 14 in odoo enterprise edition.

Çode line caused the error is below:


source = fields.Selection ( 
selection_add = [
(SRC_MIS_BUDGET , "MIS Budget by KPI" ) ,
(SRC_MIS_BUDGET_BY_ACCOUNT , "MIS Budget by Account" ) ) )

Solution:
 source = fields.Selection (
    selection_add = [ 
(SRC_MIS_BUDGET , "Budget KPI by MIS" ) ,
(SRC_MIS_BUDGET_BY_ACCOUNT , "by MIS Budget Account" ) ] , onDelete = {SRC_MIS_BUDGET: 'set default' , SRC_MIS_BUDGET_BY_ACCOUNT: 'set default' } )


Avatar
Discard

Would you be able to add how this fixes the code?

Thanks

Best Answer

Hi,

We can add new data into a selection field as shown below,

    source = fields.Selection(
selection_add=[
('SRC_MIS_BUDGET', "Budget KPI by MIS"),
('SRC_MIS_BUDGET_BY_ACCOUNT', "by MIS Budget Account")],
onDelete={'SRC_MIS_BUDGET': 'cascade',
'SRC_MIS_BUDGET_BY_ACCOUNT': 'cascade'})

Hope it helps

Avatar
Discard