0002-forms-show-correct-value-for-item-fields-in-blocks-o.patch
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 |
- |