Bookmark a menu without a icon: ValueError: Expected singleton: ir.ui.menu()
Summary
If you bookmark a menu item which does not have a icon, it will give following error:
ValueError: Expected singleton: ir.ui.menu()
Steps to reproduce
- create a demo instance, of even use your own
- open Link Tracker menu item
- click the bookmark icon (top right)
What is the current bug behavior?
ValueError: Expected singleton: ir.ui.menu()
What is the expected correct behavior?
it should work as usual, even if menu item does not have any icon
Relevant logs and/or screenshots
Error: Flectra Server Error
Traceback (most recent call last): File "/opt/flectra/server/flectra/fields.py", line 949, in get value = record.env.cache.get(record, self) File "/opt/flectra/server/flectra/api.py", line 977, in get value = self._data[key][field][record._ids[0]] KeyError: 203
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/opt/flectra/server/flectra/models.py", line 4434, in ensure_one _id, = self._ids ValueError: not enough values to unpack (expected 1, got 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/opt/flectra/server/flectra/http.py", line 658, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "/opt/flectra/server/flectra/http.py", line 314, in _handle_exception raise pycompat.reraise(type(exception), exception, sys.exc_info()[2]) File "/opt/flectra/server/flectra/tools/pycompat.py", line 87, in reraise raise value File "/opt/flectra/server/flectra/http.py", line 700, in dispatch result = self._call_function(**self.params) File "/opt/flectra/server/flectra/http.py", line 346, in _call_function return checked_call(self.db, *args, **kwargs) File "/opt/flectra/server/flectra/service/model.py", line 97, in wrapper return f(dbname, *args, **kwargs) File "/opt/flectra/server/flectra/http.py", line 339, in checked_call result = self.endpoint(*a, **kw) File "/opt/flectra/server/flectra/http.py", line 944, in call return self.method(*args, **kw) File "/opt/flectra/server/flectra/http.py", line 522, in response_wrap response = f(*args, **kw) File "/opt/flectra/server/addons/web/controllers/main.py", line 1090, in call_kw return self._call_kw(model, method, args, kwargs) File "/opt/flectra/server/addons/web/controllers/main.py", line 1082, in _call_kw return call_kw(request.env[model], method, args, kwargs) File "/opt/flectra/server/flectra/api.py", line 699, in call_kw return call_kw_multi(method, model, args, kwargs) File "/opt/flectra/server/flectra/api.py", line 690, in call_kw_multi result = method(recs, *args, **kwargs) File "/opt/flectra/server/addons/web/models/bookmark.py", line 59, in get_bookmark_data data = menu_ids.read(fields) File "/opt/flectra/server/flectra/models.py", line 2636, in read vals[name] = convert(record[name], record, use_name_get) File "/opt/flectra/server/flectra/models.py", line 4832, in getitem return self._fields[key].get(self, type(self)) File "/opt/flectra/server/flectra/fields.py", line 953, in get self.determine_value(record) File "/opt/flectra/server/flectra/fields.py", line 1066, in determine_value self.compute_value(recs) File "/opt/flectra/server/flectra/fields.py", line 1020, in compute_value self._compute_value(records) File "/opt/flectra/server/flectra/fields.py", line 1011, in _compute_value getattr(records, self.compute)() File "/opt/flectra/server/flectra/addons/base/ir/ir_ui_menu.py", line 67, in _compute_bookmark_icon menu.bookmark_icon = menu._get_parent_icon() File "/opt/flectra/server/flectra/addons/base/ir/ir_ui_menu.py", line 73, in _get_parent_icon return self.parent_id._get_parent_icon() File "/opt/flectra/server/flectra/addons/base/ir/ir_ui_menu.py", line 73, in _get_parent_icon return self.parent_id._get_parent_icon() File "/opt/flectra/server/flectra/addons/base/ir/ir_ui_menu.py", line 73, in _get_parent_icon return self.parent_id._get_parent_icon() File "/opt/flectra/server/flectra/addons/base/ir/ir_ui_menu.py", line 70, in _get_parent_icon self.ensure_one() File "/opt/flectra/server/flectra/models.py", line 4437, in ensure_one raise ValueError("Expected singleton: %s" % self) ValueError: Expected singleton: ir.ui.menu()