Help

0

AttributeError: 'str' object has no attribute 'setdefault'

Avatar
Bouke Steemers

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'

1 Comment
Avatar
Discard
Avatar
Niyas Raphy
-

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

1 Answer
0
Avatar
Praveen Kumar
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