Itgenodo101 - table product.product - le fichier n'a pas pu être décodé en tant que fichier image

Lors de la tentative de chargement des données de la table Odoo odoo.product.product, je reçois constamment l’erreur :

itgenodo101
Ce fichier n’a pas pu être décodé en tant que fichier image.
(odoo.exceptions.useError).

image

J’ai essayé de contourner cette table, mais elle est plus importante que prévu.

Quelqu’un a-t-il LA solution ?

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.

Merci pour le retour rapide. Entre-temps, nous avons pu résoudre le problème. Je tiens à partager quelle a été la solution dans mon cas.

Certains produits affichaient le texte alternatif dans l’aperçu au lieu de l’image :

image

Cela corrigé, j’ai ensuite vérifié par étapes de 200 lignes pour voir laquelle posait encore problème. Cet article dans Odoo affichait bien la miniature, mais ne pouvait pas charger la version grand format. Modifié et problème résolu.

Content de voir que ça a réussi ! Odoo est souvent un peu plus complexe.