Itgenodo101 - tabel product.product - file could not be decoded as an image file

Bij het proberen laden van de data uit Odoo-tabel odoo.product.product krijg ik steeds de fout:

itgenodo101
This file could not be decoded as an image file.
(odoo.exceptions.useError).

Ik heb getracht rond deze tabel heen te werken, maar ze is toch belangrijker dan verwacht.

Iemand dé oplossing?

De melding is op te wekken via:

select *
from odoo.product.product

met een API-call op https://acme-testing.odoo.com/jsonrpc:

{
  "id": 35,
  "jsonrpc": "2.0",
  "method": "call",
  "params": {
    "service": "object",
    "method": "execute_kw",
    "args": [
      "acme-16-0-testing-21794090",
      205,
      "secretpassword",
      "product.product",
      "search_read",
      [],
      {
        "limit": 500,
        "offset": 500,
        "context": {
          "lang": "nl_NL"
        }
      }
    ]
  }
}

waar de Odoo API-server op antwoordt met een foutmelding:

{
  "jsonrpc": "2.0",
  "id": 35,
  "error": {
    "code": 200,
    "message": "Odoo Server Error",
    "data": {
      "name": "odoo.exceptions.UserError",
      "debug": "Traceback (most recent call last):\n  File \"/home/odoo/src/odoo/odoo/api.py\", line 1013, in get\n    cache_value = field_cache[record._ids[0]]\nKeyError: 979\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File \"/home/odoo/src/odoo/odoo/fields.py\", line 1161, in __get__\n    value = env.cache.get(record, self)\n  File \"/home/odoo/src/odoo/odoo/api.py\", line 1020, in get\n    raise CacheMiss(record, field)\nodoo.exceptions.CacheMiss: 'product.product(979,).image_1920'\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File \"/home/odoo/src/odoo/odoo/tools/image.py\", line 81, in __init__\n    self.image = Image.open(io.BytesIO(source))\n  File \"/usr/lib/python3/dist-packages/PIL/Image.py\", line 3008, in open\n    raise UnidentifiedImageError(\nPIL.UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x7b4afa20ad40>\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File \"/home/odoo/src/odoo/odoo/http.py\", line 1824, in _serve_db\n    return service_model.retrying(self._serve_ir_http, self.env)\n  File \"/home/odoo/src/odoo/odoo/service/model.py\", line 152, in retrying\n    result = func()\n  File \"/home/odoo/src/odoo/odoo/http.py\", line 1852, in _serve_ir_http\n    response = self.dispatcher.dispatch(rule.endpoint, args)\n  File \"/home/odoo/src/odoo/odoo/http.py\", line 2056, in dispatch\n    result = self.request.registry['ir.http']._dispatch(endpoint)\n  File \"/home/odoo/src/odoo/odoo/addons/base/models/ir_http.py\", line 154, in _dispatch\n    result = endpoint(**request.params)\n  File \"/home/odoo/src/odoo/odoo/http.py\", line 763, in route_wrapper\n    result = endpoint(self, *args, **params_ok)\n  File \"/home/odoo/src/odoo/odoo/addons/base/controllers/rpc.py\", line 163, in jsonrpc\n    return dispatch_rpc(service, method, args)\n  File \"/home/odoo/src/odoo/odoo/http.py\", line 385, in dispatch_rpc\n    return dispatch(method, params)\n  File \"/home/odoo/src/odoo/odoo/service/model.py\", line 56, in dispatch\n    res = execute_kw(db, uid, *params[3:])\n  File \"/home/odoo/src/odoo/odoo/service/model.py\", line 79, in execute_kw\n    return execute(db, uid, obj, method, *args, **kw or {})\n  File \"/home/odoo/src/odoo/odoo/service/model.py\", line 84, in execute\n    res = execute_cr(cr, uid, obj, method, *args, **kw)\n  File \"/home/odoo/src/odoo/odoo/service/model.py\", line 70, in execute_cr\n    result = retrying(partial(odoo.api.call_kw, recs, method, args, kw), env)\n  File \"/home/odoo/src/odoo/odoo/service/model.py\", line 152, in retrying\n    result = func()\n  File \"/home/odoo/src/odoo/odoo/api.py\", line 480, in call_kw\n    result = _call_kw_model(method, model, args, kwargs)\n  File \"/home/odoo/src/odoo/odoo/api.py\", line 451, in _call_kw_model\n    result = method(recs, *args, **kwargs)\n  File \"/home/odoo/src/odoo/odoo/models.py\", line 5074, in search_read\n    result = records.read(fields, **read_kwargs)\n  File \"/home/odoo/src/odoo/odoo/models.py\", line 3038, in read\n    return self._read_format(fnames=fields, load=load)\n  File \"/home/odoo/src/odoo/odoo/models.py\", line 3219, in _read_format\n    vals[name] = convert(record[name], record, use_name_get)\n  File \"/home/odoo/src/odoo/odoo/models.py\", line 6007, in __getitem__\n    return self._fields[key].__get__(self, self.env.registry[self._name])\n  File \"/home/odoo/src/odoo/odoo/fields.py\", line 1222, in __get__\n    self.compute_value(recs)\n  File \"/home/odoo/src/odoo/odoo/fields.py\", line 2378, in compute_value\n    super().compute_value(records)\n  File \"/home/odoo/src/odoo/odoo/fields.py\", line 1404, in compute_value\n    records._compute_field_value(self)\n  File \"/home/odoo/src/odoo/addons/mail/models/mail_thread.py\", line 403, in _compute_field_value\n    return super()._compute_field_value(field)\n  File \"/home/odoo/src/odoo/odoo/models.py\", line 4276, in _compute_field_value\n    fields.determine(field.compute, self)\n  File \"/home/odoo/src/odoo/odoo/fields.py\", line 98, in determine\n    return needle(*args)\n  File \"/home/odoo/src/odoo/addons/product/models/product_product.py\", line 128, in _compute_image_1920\n    record.image_1920 = record.image_variant_1920 or record.product_tmpl_id.image_1920\n  File \"/home/odoo/src/odoo/odoo/fields.py\", line 1317, in __set__\n    self.write(protected_records, value)\n  File \"/home/odoo/src/odoo/odoo/fields.py\", line 2502, in write\n    new_value = self._image_process(value)\n  File \"/home/odoo/src/odoo/odoo/fields.py\", line 2526, in _image_process\n    return base64.b64encode(image_process(img,\n  File \"/home/odoo/src/odoo/odoo/tools/image.py\", line 267, in image_process\n    image = ImageProcess(source, verify_resolution)\n  File \"/home/odoo/src/odoo/odoo/tools/image.py\", line 83, in __init__\n    raise UserError(_(\"This file could not be decoded as an image file.\"))\nodoo.exceptions.UserError: This file could not be decoded as an image file.\n",
      "message": "This file could not be decoded as an image file.",
      "arguments": [
        "This file could not be decoded as an image file."
      ],
      "context": {}
    }
  }
}

Deze specifieke melding zal vanaf release 25.0 omgezet worden in itgenodo159 voor snellere herkenning.

Dit betreft een bug in Odoo zelf, hetzij in de software, hetzij in de configuratie.

Advies is om zowel de getoonde JSON-call als het JSON-antwoord op te sturen naar Odoo en hun te vragen hierbij van assistentie te zijn. Mogelijkerwijs heeft een product een in Odoo gekoppelde afbeelding die corrupt is, maar de uiteindelijke beoordeling hiervan ligt bij Odoo.

Bedankt voor de snelle feedback. Inmiddels kunnen oplossen. Ik geef graag even mee wat in mijn geval de oplossing was.

Sommige producten toonden de alt-text in overzicht ipv afbeelding:

Dit rechtgezet, vervolgens in stappen van 200 gaan kijken welke lijn nog een issue gaf. Dit artikel in Odoo toonde wel netjes de miniatuur afbeelding, maar kon de grote versie niet laden. Gewijzigd en probleem opgelost.

Fijn dat gelukt is! Odoo is vaak net wat complexer.