Projet

Général

Profil

Bug #32424

crash quand restauration d'un brouillon sur sa page de validation et qu'un champ "tableau de longueur variable" a entretemps été ajouté

Ajouté par Frédéric Péters il y a environ 5 ans. Mis à jour il y a environ 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
17 avril 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Exception:
  type = '<type 'exceptions.AssertionError'>', value = 'value 'f3' not a list: got '''

Stack trace (most recent call first):
  File "/usr/lib/python2.7/dist-packages/quixote/form/widget.py", line 790, in __init__
   788                  add_element_label="Add row", **kwargs):
   789         assert value is None or type(value) is list, (
>  790             "value '%s' not a list: got %r" % (name, value))
   791         assert issubclass(element_type, Widget), (
   792             "value '%s' element_type not a Widget: " 

  locals: 
     add_element_label = 'Add row'
     element_kwargs = {'readonly': 'readonly'}
     element_type = <class 'wcs.qommon.form.klass'>
     kwargs = {'render_br': False, 'title': 'table'}
     name = 'f3'
     self = <ERROR WHILE PRINTING VALUE>
     value = ''

  File "/home/fred/src/eo/wcs/wcs/qommon/form.py", line 1268, in __init__
  1266                 element_type=element_type,
  1267                 element_kwargs=element_kwargs,
> 1268                 add_element_label=add_element_label, **kwargs)
  1269 
  1270     def add_media(self):

  locals: 
     add_element_label = 'Add row'
     element_kwargs = {'readonly': 'readonly'}
     element_type = <class 'wcs.qommon.form.klass'>
     kwargs = {'render_br': False, 'title': 'table'}
     name = 'f3'
     self = <ERROR WHILE PRINTING VALUE>
     value = ''

  File "/home/fred/src/eo/wcs/wcs/qommon/form.py", line 1629, in __init__
  1627         WidgetListAsTable.__init__(self, name, value,
  1628                 element_type=self.table_row_class,
> 1629                 element_kwargs=self.widget_kwargs, **kwargs)
  1630         self.columns = columns
  1631 

  locals: 
     columns = ['a', 'b']
     kwargs = {'add_element_label': 'Add row', 'render_br': False, 'title': 'table'}
     min_rows = 5
     name = 'f3'
     self = <ERROR WHILE PRINTING VALUE>
     value = ''

  File "/usr/lib/python2.7/dist-packages/quixote/form/form.py", line 234, in add
   232         if name in self._names:
   233             raise ValueError, "form already has '%s' widget" % name
>  234         widget = widget_class(name, *args, **kwargs)
   235         self._names[name] = widget
   236         if isinstance(widget, SubmitWidget):

  locals: 
     args = ()
     kwargs = {'render_br': False, 'title': 'table', 'add_element_label': 'Add row', 'value': '', 'readonly': 'readonly', 'columns': ['a', 'b']}
     name = 'f3'
     self = <wcs.qommon.form.Form object at 0x7fe22d3f7110>
     widget_class = <class 'wcs.qommon.form.TableListRowsWidget'>

  File "/home/fred/src/eo/wcs/wcs/qommon/form.py", line 292, in add
   290             advanced = True
   291             del kwargs['advanced']
>  292         QuixoteForm.add(self, widget_class, name, *args, **kwargs)
   293         widget = self._names[name]
   294         widget.advanced = advanced

  locals: 
     advanced = False
     args = ()
     kwargs = {'render_br': False, 'title': 'table', 'add_element_label': 'Add row', 'value': '', 'readonly': 'readonly', 'columns': ['a', 'b']}
     name = 'f3'
     self = <wcs.qommon.form.Form object at 0x7fe22d3f7110>
     widget_class = <class 'wcs.qommon.form.TableListRowsWidget'>

  File "/home/fred/src/eo/wcs/wcs/fields.py", line 485, in add_to_view_form
   483 
   484         form.add(self.widget_class, self.field_key, title = self.label,
>  485                 value = value, readonly = 'readonly', **kwargs)
   486         widget = form.get_widget(self.field_key)
   487         if self.extra_css_class:

  locals: 
     form = <wcs.qommon.form.Form object at 0x7fe22d3f7110>
     kwargs = {'add_element_label': 'Add row', 'columns': ['a', 'b']}
     self = <wcs.fields.TableRowsField object at 0x7fe22d3f7710>
     value = ''

  File "/home/fred/src/eo/wcs/wcs/formdef.py", line 624, in create_view_form
   622             current_page_fields.append(field)
   623             value = dict.get(field.id, '')
>  624             field.add_to_view_form(form, value)
   625 
   626         if on_page:

Fichiers

Révisions associées

Révision 520a34c0 (diff)
Ajouté par Frédéric Péters il y a environ 5 ans

misc: don't crash restoring unset table with rows field (#32424)

Historique

#1

Mis à jour par Frédéric Péters il y a environ 5 ans

-            value = dict.get(field.id, '')
+            value = dict.get(field.id)

Je suis remonté dans l'historique pour voir quand '' aurait été ajouté, en imaginant que ça a pu corriger quelque chose à un moment, qu'il y aurait un message de commit, un ticket, que sais-je.

Mais c'était comme ça dès le premier commit :

+    def create_view_form(self, dict = {}):
...
+            form.add(widget_classes[field['type']], "f%d" % i, title = field['name'],
+                    readonly = "readonly", value = dict.get(field['name'], ''), **kwargs)

Tous les tests passent etc.

#2

Mis à jour par Frédéric Péters il y a environ 5 ans

(il faudrait celui-ci dans la prochaine mise à jour)

#3

Mis à jour par Thomas Noël il y a environ 5 ans

  • Statut changé de Solution proposée à Résolu (à déployer)
commit 520a34c0ac7a6d04c0a19ef31f5b742dda7b0973
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Wed Apr 17 15:59:17 2019 +0200

    misc: don't crash restoring unset table with rows field (#32424)

#4

Mis à jour par Frédéric Péters il y a environ 5 ans

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

Formats disponibles : Atom PDF