0001-fields-display-ItemsField-using-ul-on-summary-page-i.patch
tests/test_fields.py | ||
---|---|---|
155 | 155 |
assert field.get_options() == [('1', 'foo', '1'), ('2', 'bar', '2')] |
156 | 156 |
assert field.get_options() == [('1', 'foo', '1'), ('2', 'bar', '2')] # twice for cached behaviour |
157 | 157 | |
158 |
field = fields.ItemsField() |
|
159 |
view_value = field.get_view_value('a, b', value_id=['1', '2'], labels=['a', 'b']) |
|
160 |
elems = BeautifulSoup(str(view_value)).find('ul').find_all('li') |
|
161 |
assert len(elems) == 2 |
|
162 |
assert elems[0].text == 'a' |
|
163 |
assert elems[1].text == 'b' |
|
164 | ||
158 | 165 | |
159 | 166 |
def test_password(): |
160 | 167 |
assert fields.PasswordField().get_view_value('xxx') == '●' * 8 |
wcs/fields.py | ||
---|---|---|
2224 | 2224 |
except TypeError: |
2225 | 2225 |
raise ValueError('invalid data for items type (%r)' % value) |
2226 | 2226 | |
2227 |
def get_value_info(self, data): |
|
2228 |
value, value_details = super().get_value_info(data) |
|
2229 |
structured_values = self.get_structured_value(data) |
|
2230 |
if structured_values: |
|
2231 |
value_details['labels'] = [] |
|
2232 |
for structured_value in structured_values: |
|
2233 |
value_details['labels'].append(structured_value['text']) |
|
2234 |
return (value, value_details) |
|
2235 | ||
2227 | 2236 |
def get_view_value(self, value, **kwargs): |
2237 |
if 'labels' in kwargs: |
|
2238 |
# summary page |
|
2239 |
r = TemplateIO(html=True) |
|
2240 |
r += htmltext('<ul>') |
|
2241 |
for x in kwargs['labels']: |
|
2242 |
r += htmltext('<li>%s</li>' % x) |
|
2243 |
r += htmltext('</ul>') |
|
2244 |
return r.getvalue() |
|
2245 | ||
2228 | 2246 |
if type(value) is str: # == display_value |
2229 | 2247 |
return value |
2230 | 2248 |
if value: |
... | ... | |
2297 | 2315 |
structured_options = data_sources.get_structured_items(self.data_source) |
2298 | 2316 |
if not structured_options: |
2299 | 2317 |
return |
2300 |
if not set(structured_options[0].keys()) != set(['id', 'text']): |
|
2301 |
return |
|
2302 | 2318 |
structured_value = [] |
2303 | 2319 |
for structured_option in structured_options: |
2304 | 2320 |
for choice in data.get(field_id) or []: |
wcs/qommon/static/css/qommon.scss | ||
---|---|---|
299 | 299 |
div.dataview .value { |
300 | 300 |
display: block; |
301 | 301 |
margin-left: 1em; |
302 |
ul { |
|
303 |
margin-top: 0; |
|
304 |
margin-bottom : 0; |
|
305 |
} |
|
302 | 306 |
} |
303 | 307 | |
304 | 308 |
form div.page, |
305 |
- |