Projet

Général

Profil

Bug #49426

ValueError: not enough values to unpack (expected 3, got 2)

Ajouté par Lauréline Guérin il y a plus de 3 ans. Mis à jour il y a plus de 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
14 décembre 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

ValueError: not enough values to unpack (expected 3, got 2)
  File "django/core/handlers/exception.py", line 41, in inner
    response = get_response(request)
  File "django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "wcs/compat.py", line 253, in quixote
    return pub.process_request(pub.get_request())
  File "wcs/compat.py", line 221, in process_request
    django_response.render()
  File "django/template/response.py", line 107, in render
    self.content = self.rendered_content
  File "django/template/response.py", line 84, in rendered_content
    content = template.render(context, self._request)
  File "django/template/backends/django.py", line 66, in render
    return self.template.render(context)
  File "django/template/base.py", line 207, in render
    return self._render(context)
  File "django/template/base.py", line 199, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 990, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 957, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 177, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 199, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 990, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 957, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 177, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 199, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 990, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 957, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 72, in render
    result = block.nodelist.render(context)
  File "django/template/base.py", line 990, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 957, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 72, in render
    result = block.nodelist.render(context)
  File "django/template/base.py", line 990, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 957, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 72, in render
    result = block.nodelist.render(context)
  File "django/template/base.py", line 990, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 957, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 72, in render
    result = block.nodelist.render(context)
  File "django/template/base.py", line 990, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 957, in render_annotated
    return self.render(context)
  File "django/template/base.py", line 1040, in render
    output = self.filter_expression.resolve(context)
  File "django/template/base.py", line 708, in resolve
    obj = self.var.resolve(context)
  File "wcs/qommon/template.py", line 533, in variable_resolve
    value = variable_resolve_orig(self, context)
  File "django/template/base.py", line 849, in resolve
    value = self._resolve_lookup(context)
  File "django/template/base.py", line 911, in _resolve_lookup
    current = current()
  File "quixote/form/form.py", line 291, in render
    r += self._render_body()
  File "wcs/qommon/form.py", line 423, in _render_body
    r += self._render_widgets()
  File "wcs/qommon/form.py", line 444, in _render_widgets
    r += widget.render()
  File "wcs/qommon/form.py", line 175, in render
    return htmltext(render_template(template_names, context))
  File "wcs/qommon/template.py", line 415, in render
    result = render_to_string(template_name, context, request=request)
  File "django/template/loader.py", line 68, in render_to_string
    return template.render(context, request)
  File "django/template/backends/django.py", line 66, in render
    return self.template.render(context)
  File "django/template/base.py", line 207, in render
    return self._render(context)
  File "django/template/base.py", line 199, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 990, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 957, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 177, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 199, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 990, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 957, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 72, in render
    result = block.nodelist.render(context)
  File "django/template/base.py", line 990, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 957, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 72, in render
    result = block.nodelist.render(context)
  File "django/template/base.py", line 990, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 957, in render_annotated
    return self.render(context)
  File "django/template/defaulttags.py", line 172, in render
    values = list(values)
  File "wcs/qommon/form.py", line 266, in get_options
    object, description, key = option[:3]

https://sentry.entrouvert.org/entrouvert/nfrance/issues/25309/


Fichiers

Révisions associées

Révision 1bee5d7d (diff)
Ajouté par Frédéric Péters il y a plus de 3 ans

misc: use 3-items tuple when there's no options for radio list (#49426)

Historique

#1

Mis à jour par Lauréline Guérin il y a plus de 3 ans

  • Assigné à mis à Lauréline Guérin
#2

Mis à jour par Lauréline Guérin il y a plus de 3 ans

Bon, je ne comprends pas.
Fait étrange, d'après la sentry options contient un seul élément, qui est une liste.
Je ne vois pas d'après le code comment on peut avoir une liste, on a des tuples partout.

Pour ce cas d'usage, on a un ItemField de type radio avec datasource. Raison de plus pour ne pas avoir de liste, get_items renvoie bien un tuple.

J'arrive à écrire un test qui pète sur cette erreur, en passant [[None, '--']] à options et options_with_attributes à l'init du RadiobuttonsWidget, mais encore une fois, d'après le code je ne vois pas comment on peut en arriver là.

Une idée ?

#3

Mis à jour par Lauréline Guérin il y a plus de 3 ans

  • Assigné à Lauréline Guérin supprimé
#4

Mis à jour par Frédéric Péters il y a plus de 3 ans

Je ne vois pas non plus le détail du parcours qui pourrait amener ça, avoir cette présence d'une liste [None, '---'] plutôt que le tuple (None, '---') est étrange (j'imagine qu'il doit y avoir un endroit où on reconstitue l'élément sous forme de liste mais j'ai décidé d'arrêter de chercher); dans ce que j'imagine on a une source de données, elle échoue et/ou est vide, on passe alors par kwargs['options'] = [(None, '---')] mais plus loin parce qu'on une source de données définie il est attendu que le tuple ait trois éléments, boum.

Je propose de juste poser un patch sur cette hypothèse et ne pas creuser davantage.

#5

Mis à jour par Lauréline Guérin il y a plus de 3 ans

  • Statut changé de Solution proposée à Solution validée

ok si jenkins est d'accord, on verra si cette erreur ressort

#6

Mis à jour par Frédéric Péters il y a plus de 3 ans

  • Statut changé de Solution validée à Résolu (à déployer)

jenkins ok,

commit 1bee5d7de88a79c3bdfd36836e0eb268e389b6b4
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Fri Dec 18 10:39:52 2020 +0100

    misc: use 3-items tuple when there's no options for radio list (#49426)
#7

Mis à jour par Frédéric Péters il y a plus de 3 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF