Projet

Général

Profil

0002-forms-show-correct-value-for-item-fields-in-blocks-o.patch

Frédéric Péters, 12 juillet 2020 16:06

Télécharger (2,4 ko)

Voir les différences:

Subject: [PATCH 2/3] forms: show correct value for item fields in blocks on
 validation page (#44816)

 wcs/blocks.py | 7 +++++--
 wcs/fields.py | 7 +++++--
 2 files changed, 10 insertions(+), 4 deletions(-)
wcs/blocks.py
210 210
        super().__init__(name, value, *args, **kwargs)
211 211
        for field in self.block.fields:
212 212
            if 'readonly' in kwargs:
213
                field.add_to_view_form(form=self)
213
                field_value = None
214
                if value is not None:
215
                    field_value = value.get(field.id)
216
                field.add_to_view_form(form=self, value=field_value)
214 217
            else:
215 218
                field.add_to_form(form=self)
216 219
        if value:
......
218 221

  
219 222
    def set_value(self, value):
220 223
        for widget in self.get_widgets():
221
            if hasattr(widget, 'set_value'):
224
            if hasattr(widget, 'set_value') and not getattr(widget, 'secondary', False):
222 225
                widget.set_value(value.get(widget.field.id))
223 226

  
224 227
    def get_field_data(self, field, widget):
wcs/fields.py
1561 1561
            label_value = self.get_display_value(value)
1562 1562
        self.field_key = 'f%s' % self.id
1563 1563

  
1564
        get_request().form[self.field_key + '_label'] = label_value # :/
1565 1564
        form.add(StringWidget, self.field_key + '_label', title = self.label,
1566 1565
                 value=label_value, readonly='readonly', size=len(label_value or '')+2)
1567
        form.get_widget(self.field_key + '_label').field = self
1566
        label_widget = form.get_widget(self.field_key + '_label')
1567
        # don't let subwidget overwrite label widget value
1568
        label_widget.secondary = True
1569
        get_request().form[label_widget.name] = label_value
1570
        label_widget.field = self
1568 1571
        form.add(HiddenWidget, self.field_key, value=real_value)
1569 1572
        form.get_widget(self.field_key).field = self
1570 1573
        widget = form.get_widget(self.field_key + '_label')
1571
-