0001-fields-add-detailed-field-value-support-to-block-fie.patch
wcs/fields.py | ||
---|---|---|
603 | 603 |
def get_csv_heading(self): |
604 | 604 |
return [self.label] |
605 | 605 | |
606 |
def get_value_info(self, data): |
|
607 |
# return the selected value and an optional dictionary that will be |
|
608 |
# passed to get_view_value() to provide additional details. |
|
609 |
value_details = {} |
|
610 |
if self.id not in data: |
|
611 |
value = None |
|
612 |
else: |
|
613 |
if self.store_display_value and ('%s_display' % self.id) in data: |
|
614 |
value = data['%s_display' % self.id] |
|
615 |
value_details['value_id'] = data[self.id] |
|
616 |
else: |
|
617 |
value = data[self.id] |
|
618 | ||
619 |
if value is None or value == '': |
|
620 |
value = None |
|
621 |
return (value, value_details) |
|
622 | ||
606 | 623 |
def get_view_value(self, value, **kwargs): |
607 | 624 |
return str(value) if value else '' |
608 | 625 | |
... | ... | |
2653 | 2670 |
r = TemplateIO(html=True) |
2654 | 2671 |
for i, row_value in enumerate(value['data']): |
2655 | 2672 |
for field in self.block.fields: |
2673 |
if not hasattr(field, 'get_value_info'): |
|
2674 |
# inert field |
|
2675 |
continue |
|
2656 | 2676 |
css_classes = ['field', 'field-type-%s' % field.key] |
2657 | 2677 |
if field.extra_css_class: |
2658 | 2678 |
css_classes.append(field.extra_css_class) |
2659 | 2679 |
r += htmltext('<div class="%s">' % ' '.join(css_classes)) |
2660 | 2680 |
r += htmltext('<span class="label">%s</span> ') % field.label |
2661 |
sub_value = row_value.get(field.id)
|
|
2681 |
sub_value, sub_value_details = field.get_value_info(row_value)
|
|
2662 | 2682 |
if sub_value is None: |
2663 | 2683 |
r += htmltext('<div class="value"><i>%s</i></div>') % _('Not set') |
2664 | 2684 |
else: |
2665 | 2685 |
r += htmltext('<div class="value">') |
2666 |
r += field.get_view_value(sub_value, parent_field=self, parent_field_index=i) |
|
2686 |
kwargs = {'parent_field': self, 'parent_field_index': i} |
|
2687 |
kwargs.update(**sub_value_details) |
|
2688 |
r += field.get_view_value(sub_value, **kwargs) |
|
2667 | 2689 |
r += htmltext('</div>') |
2668 | 2690 |
r += htmltext('</div>\n') |
2669 | 2691 |
return r.getvalue() |
wcs/formdata.py | ||
---|---|---|
1134 | 1134 |
if fields is None: |
1135 | 1135 |
fields = self.formdef.fields |
1136 | 1136 | |
1137 |
def get_value_info(f): |
|
1138 |
# return the selected value and an optional dictionary that will be |
|
1139 |
# passed to get_view_value() to provide additional details. |
|
1140 |
value_details = {} |
|
1141 |
if f.id not in self.data: |
|
1142 |
value = None |
|
1143 |
else: |
|
1144 |
if f.store_display_value and ('%s_display' % f.id) in self.data: |
|
1145 |
value = self.data['%s_display' % f.id] |
|
1146 |
value_details['value_id'] = self.data[f.id] |
|
1147 |
else: |
|
1148 |
value = self.data[f.id] |
|
1149 | ||
1150 |
if value is None or value == '': |
|
1151 |
value = None |
|
1152 |
return (value, value_details) |
|
1153 | ||
1154 | 1137 |
on_page = False |
1155 | 1138 |
current_page_fields = [] |
1156 | 1139 |
pages = [] |
... | ... | |
1176 | 1159 |
if not f.include_in_summary_page: |
1177 | 1160 |
continue |
1178 | 1161 | |
1179 |
value, value_details = get_value_info(f)
|
|
1162 |
value, value_details = f.get_value_info(self.data)
|
|
1180 | 1163 |
if value is None and not (f.required and include_unset_required_fields): |
1181 | 1164 |
continue |
1182 | 1165 | |
1183 |
- |