forms: show correct value for item fields in blocks on validation page (#44816)
This commit is contained in:
parent
96fe2e3fc7
commit
ae0bb033cc
|
@ -210,7 +210,10 @@ class BlockSubWidget(CompositeWidget):
|
|||
super().__init__(name, value, *args, **kwargs)
|
||||
for field in self.block.fields:
|
||||
if 'readonly' in kwargs:
|
||||
field.add_to_view_form(form=self)
|
||||
field_value = None
|
||||
if value is not None:
|
||||
field_value = value.get(field.id)
|
||||
field.add_to_view_form(form=self, value=field_value)
|
||||
else:
|
||||
field.add_to_form(form=self)
|
||||
if value:
|
||||
|
@ -218,7 +221,7 @@ class BlockSubWidget(CompositeWidget):
|
|||
|
||||
def set_value(self, value):
|
||||
for widget in self.get_widgets():
|
||||
if hasattr(widget, 'set_value'):
|
||||
if hasattr(widget, 'set_value') and not getattr(widget, 'secondary', False):
|
||||
widget.set_value(value.get(widget.field.id))
|
||||
|
||||
def get_field_data(self, field, widget):
|
||||
|
|
|
@ -1561,10 +1561,13 @@ class ItemField(WidgetField):
|
|||
label_value = self.get_display_value(value)
|
||||
self.field_key = 'f%s' % self.id
|
||||
|
||||
get_request().form[self.field_key + '_label'] = label_value # :/
|
||||
form.add(StringWidget, self.field_key + '_label', title = self.label,
|
||||
value=label_value, readonly='readonly', size=len(label_value or '')+2)
|
||||
form.get_widget(self.field_key + '_label').field = self
|
||||
label_widget = form.get_widget(self.field_key + '_label')
|
||||
# don't let subwidget overwrite label widget value
|
||||
label_widget.secondary = True
|
||||
get_request().form[label_widget.name] = label_value
|
||||
label_widget.field = self
|
||||
form.add(HiddenWidget, self.field_key, value=real_value)
|
||||
form.get_widget(self.field_key).field = self
|
||||
widget = form.get_widget(self.field_key + '_label')
|
||||
|
|
Loading…
Reference in New Issue