Skip to content

Cannot access participation record due to singleton error and duplicated binary answers #182

Open
@kobros-tech

Description

@kobros-tech

Module

survey_question_type_binary

Describe the bug

answer of type binary is duplicated while it should be a single value and it causes singleton error in the system.

To Reproduce

16.0

Steps to reproduce the behavior:

  1. create a survey of email (required email form) and binary answer.
  2. open the survey and add your email "foo", and file and submit but you shoud fix the email.
  3. write the email "bar" and submit, you should fial again.
  4. now add a correct email form [email protected] and submit, you succeed.
  5. review your answers ans see that the same binary file is duplicated many times
  6. open the participation record in the backend and you cannot open due to singleton error.

Expected behavior
get one answer value for single binary answer type, not get singleton error.

Additional context

RPC_ERROR
Odoo Server Error
Traceback (most recent call last):
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/api.py", line 1013, in get
cache_value = field_cache[record._ids[0]]
~~~~~~~~~~~^^^^^^^^^^^^^^^^
KeyError: 198

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/fields.py", line 1161, in get
value = env.cache.get(record, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/api.py", line 1020, in get
raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: 'survey.user_input.line(198,).display_name'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/models.py", line 5219, in ensure_one
_id, = self._ids
^^^^
ValueError: too many values to unpack (expected 1)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/http.py", line 1673, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/service/model.py", line 152, in retrying
result = func()
^^^^^^
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/http.py", line 1701, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/http.py", line 1905, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
result = endpoint(**request.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/http.py", line 749, in route_wrapper
result = endpoint(self, *args, **params_ok)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/media/kobros/Home/Workspace/odoo16/odoo/addons/web/controllers/dataset.py", line 43, in call_kw
return self._call_kw(model, method, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/media/kobros/Home/Workspace/odoo16/odoo/addons/web/controllers/dataset.py", line 34, in _call_kw
return call_kw(Model, method, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/api.py", line 484, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/api.py", line 469, in _call_kw_multi
result = method(recs, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/models.py", line 3038, in read
return self._read_format(fnames=fields, load=load)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/models.py", line 3219, in _read_format
vals[name] = convert(record[name], record, use_name_get)
~~~~~~^^^^^^
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/models.py", line 6007, in getitem
return self._fields[key].get(self, self.env.registry[self._name])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/fields.py", line 1222, in get
self.compute_value(recs)
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/fields.py", line 1404, in compute_value
records._compute_field_value(self)
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/models.py", line 4276, in _compute_field_value
fields.determine(field.compute, self)
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/fields.py", line 98, in determine
return needle(*args)
^^^^^^^^^^^^^
File "/media/kobros/Home/Workspace/odoo16/survey/survey_question_type_binary/models/survey_user_input_line.py", line 72, in _compute_display_name
line.display_name = line.answer_binary_ids.filename
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/fields.py", line 1154, in get
record.ensure_one()
File "/media/kobros/Home/Workspace/odoo16/odoo/odoo/models.py", line 5222, in ensure_one
raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: survey.user_input.line_binary(12, 13, 14, 15)

The above server error caused the following client error:
null

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions