0001-fields-change-list-show-as-radio-option-into-a-displ.patch
tests/test_backoffice_pages.py | ||
---|---|---|
3543 | 3543 |
fields.ItemField( |
3544 | 3544 |
id='2', label='Test2', type='item', |
3545 | 3545 |
prefill={'type': 'string', 'value': ''}, |
3546 |
show_as_radio=True,
|
|
3546 |
display_mode='radio',
|
|
3547 | 3547 |
varname='radio', |
3548 | 3548 |
items=['a', 'b', 'c'], required=True)) |
3549 | 3549 |
status.items.append(display_form) |
tests/test_fields.py | ||
---|---|---|
278 | 278 |
'value': '''['aa', 'ab', 'ac']'''}}) |
279 | 279 | |
280 | 280 |
for item_kwargs in items_kwargs: |
281 |
field = fields.ItemField(id='1', label='Foobar', show_as_radio=True, **item_kwargs)
|
|
281 |
field = fields.ItemField(id='1', label='Foobar', display_mode='radio', **item_kwargs)
|
|
282 | 282 |
form = Form(use_tokens=False) |
283 | 283 |
field.add_to_form(form) |
284 | 284 |
assert str(form.render()).count('"radio"') == 3 |
285 | 285 | |
286 | 286 |
field = fields.ItemField(id='1', label='Foobar', required=False, |
287 |
show_as_radio=True, **item_kwargs)
|
|
287 |
display_mode='radio', **item_kwargs)
|
|
288 | 288 |
form = Form(use_tokens=False) |
289 | 289 |
field.add_to_form(form) |
290 | 290 |
assert str(form.render()).count('"radio"') == 3 |
291 | 291 | |
292 | 292 |
field = fields.ItemField(id='1', label='Foobar', |
293 |
show_as_radio=True, required=False, hint='Bla bla bla', **item_kwargs)
|
|
293 |
display_mode='radio', required=False, hint='Bla bla bla', **item_kwargs)
|
|
294 | 294 |
form = Form(use_tokens=False) |
295 | 295 |
field.add_to_form(form) |
296 | 296 |
assert str(form.render()).count('"radio"') == 3 |
297 | 297 | |
298 | 298 |
field = fields.ItemField(id='1', label='Foobar', |
299 |
show_as_radio=True, required=True, hint='Bla bla bla', **item_kwargs)
|
|
299 |
display_mode='radio', required=True, hint='Bla bla bla', **item_kwargs)
|
|
300 | 300 |
form = Form(use_tokens=False) |
301 | 301 |
field.add_to_form(form) |
302 | 302 |
assert str(form.render()).count('"radio"') == 3 |
... | ... | |
308 | 308 |
'type': 'formula', |
309 | 309 |
'value': '''[]'''}}) |
310 | 310 |
for item_kwargs in items_kwargs: |
311 |
field = fields.ItemField(id='1', label='Foobar', show_as_radio=True, **item_kwargs)
|
|
311 |
field = fields.ItemField(id='1', label='Foobar', display_mode='radio', **item_kwargs)
|
|
312 | 312 |
form = Form(use_tokens=False) |
313 | 313 |
field.add_to_form(form) |
314 | 314 |
assert str(form.render()).count('"radio"') == 1 |
315 | 315 | |
316 | 316 |
field = fields.ItemField(id='1', label='Foobar', required=False, |
317 |
show_as_radio=True, **item_kwargs)
|
|
317 |
display_mode='radio', **item_kwargs)
|
|
318 | 318 |
form = Form(use_tokens=False) |
319 | 319 |
field.add_to_form(form) |
320 | 320 |
assert str(form.render()).count('"radio"') == 1 |
321 | 321 | |
322 | 322 |
field = fields.ItemField(id='1', label='Foobar', |
323 |
show_as_radio=True, required=False, hint='Bla bla bla', **item_kwargs)
|
|
323 |
display_mode='radio', required=False, hint='Bla bla bla', **item_kwargs)
|
|
324 | 324 |
form = Form(use_tokens=False) |
325 | 325 |
field.add_to_form(form) |
326 | 326 |
assert str(form.render()).count('"radio"') == 1 |
327 | 327 | |
328 | 328 |
field = fields.ItemField(id='1', label='Foobar', |
329 |
show_as_radio=True, required=True, hint='Bla bla bla', **item_kwargs)
|
|
329 |
display_mode='radio', required=True, hint='Bla bla bla', **item_kwargs)
|
|
330 | 330 |
form = Form(use_tokens=False) |
331 | 331 |
field.add_to_form(form) |
332 | 332 |
assert str(form.render()).count('"radio"') == 1 |
333 | 333 | |
334 | 334 |
def test_item_radio_lengths(): |
335 |
field = fields.ItemField(id='1', label='Foobar', show_as_radio=True,
|
|
335 |
field = fields.ItemField(id='1', label='Foobar', display_mode='radio',
|
|
336 | 336 |
items=['aa', 'ab', 'ac']) |
337 | 337 |
form = Form(use_tokens=False) |
338 | 338 |
field.add_to_form(form) |
339 | 339 |
form.render() |
340 | 340 |
assert str(form.widgets[-1].render()).count('<br') == 0 |
341 | 341 | |
342 |
field = fields.ItemField(id='1', label='Foobar', show_as_radio=True,
|
|
342 |
field = fields.ItemField(id='1', label='Foobar', display_mode='radio',
|
|
343 | 343 |
items=['aa'*30, 'ab', 'ac']) |
344 | 344 |
form = Form(use_tokens=False) |
345 | 345 |
field.add_to_form(form) |
346 | 346 |
form.render() |
347 | 347 |
assert str(form.widgets[-1].render()).count('<br') == 2 |
348 | 348 | |
349 |
field = fields.ItemField(id='1', label='Foobar', show_as_radio=True,
|
|
349 |
field = fields.ItemField(id='1', label='Foobar', display_mode='radio',
|
|
350 | 350 |
items=['aa', 'ab'*30, 'ac']) |
351 | 351 |
form = Form(use_tokens=False) |
352 | 352 |
field.add_to_form(form) |
353 | 353 |
form.render() |
354 | 354 |
assert str(form.widgets[-1].render()).count('<br') == 2 |
355 | 355 | |
356 |
field = fields.ItemField(id='1', label='Foobar', show_as_radio=True,
|
|
356 |
field = fields.ItemField(id='1', label='Foobar', display_mode='radio',
|
|
357 | 357 |
items=['aa', 'ab', 'ac', 'ad']) |
358 | 358 |
form = Form(use_tokens=False) |
359 | 359 |
field.add_to_form(form) |
tests/test_form_pages.py | ||
---|---|---|
4611 | 4611 |
formdef.data_class().wipe() |
4612 | 4612 |
formdef.fields = [fields.ItemField(id='0', label='item', type='item', |
4613 | 4613 |
items=['bar@localhost', 'foo@localhost', 'baz@localhost'], |
4614 |
show_as_radio=True,
|
|
4614 |
display_mode='radio',
|
|
4615 | 4615 |
prefill={'type': 'user', 'value': 'email'})] |
4616 | 4616 |
formdef.store() |
4617 | 4617 | |
... | ... | |
4699 | 4699 | |
4700 | 4700 |
formdef.data_class().wipe() |
4701 | 4701 |
formdef.fields = [fields.ItemField(id='0', label='string', type='item', |
4702 |
data_source=ds, show_as_radio=True, display_disabled_items=True)]
|
|
4702 |
data_source=ds, display_mode='radio', display_disabled_items=True)]
|
|
4703 | 4703 |
formdef.store() |
4704 | 4704 | |
4705 | 4705 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
... | ... | |
5651 | 5651 |
fields.PageField(id='0', label='1st page', type='page'), |
5652 | 5652 |
fields.ItemField(type='item', id='1', label='Bar', |
5653 | 5653 |
items=['oui', 'non'], |
5654 |
show_as_radio=True,
|
|
5654 |
display_mode='radio',
|
|
5655 | 5655 |
required=True, varname='bar'), |
5656 | 5656 |
fields.ItemField(type='item', id='2', label='Foo', size='40', |
5657 | 5657 |
required=True, |
tests/test_formdef_import.py | ||
---|---|---|
111 | 111 |
assert f2.fields[3].minimum_date == formdef.fields[3].minimum_date |
112 | 112 |
assert f2.fields[4].items == formdef.fields[4].items |
113 | 113 | |
114 |
def test_item_radio(): |
|
115 |
formdef = FormDef() |
|
116 |
formdef.name = 'Blah' |
|
117 |
formdef.fields = [ |
|
118 |
fields.ItemField( |
|
119 |
type='item', |
|
120 |
label='Bar', |
|
121 |
items=['foo', 'bar', 'baz'], |
|
122 |
list_mode='radio', |
|
123 |
id='1', |
|
124 |
), |
|
125 |
] |
|
126 | ||
127 |
# test new mode |
|
128 |
assert_json_import_export_works(formdef, include_id=True) |
|
129 | ||
130 |
# test conversion of legacy show_as_radio attribute |
|
131 |
formdef_xml = formdef.export_to_xml(include_id=True) |
|
132 |
field = formdef_xml.findall('fields/field')[0] |
|
133 |
ET.SubElement(field, 'show_as_radio').text = 'True' |
|
134 |
field.remove(field.find('display_mode')) |
|
135 |
fd2 = FormDef.import_from_xml_tree(formdef_xml, include_id=True) |
|
136 |
assert fd2.fields[0].display_mode == 'radio' |
|
137 | ||
138 |
# test conversion of legacy show_as_radio attribute |
|
139 |
formdef_xml = formdef.export_to_xml(include_id=True) |
|
140 |
field = formdef_xml.findall('fields/field')[0] |
|
141 |
ET.SubElement(field, 'show_as_radio').text = 'False' |
|
142 |
field.remove(field.find('display_mode')) |
|
143 |
fd2 = FormDef.import_from_xml_tree(formdef_xml, include_id=True) |
|
144 |
assert fd2.fields[0].display_mode == 'list' |
|
145 | ||
114 | 146 |
def test_include_id(): |
115 | 147 |
formdef = FormDef() |
116 | 148 |
formdef.name = 'Blah' |
wcs/fields.py | ||
---|---|---|
1189 | 1189 |
description = N_('List') |
1190 | 1190 | |
1191 | 1191 |
items = [] |
1192 |
show_as_radio = False
|
|
1192 |
show_as_radio = None
|
|
1193 | 1193 |
anonymise = False |
1194 | 1194 |
widget_class = SingleSelectHintWidget |
1195 | 1195 |
data_source = {} |
1196 | 1196 |
in_filters = False |
1197 | 1197 |
display_disabled_items = False |
1198 |
display_mode = 'list' |
|
1198 | 1199 | |
1199 | 1200 |
def __init__(self, **kwargs): |
1200 | 1201 |
self.items = [] |
1201 | 1202 |
WidgetField.__init__(self, **kwargs) |
1202 | 1203 | |
1204 |
def migrate(self): |
|
1205 |
changed = super(ItemField, self).migrate() |
|
1206 |
if isinstance(getattr(self, 'show_as_radio', None), bool): |
|
1207 |
if self.show_as_radio: |
|
1208 |
self.display_mode = 'radio' |
|
1209 |
else: |
|
1210 |
self.display_mode = 'list' |
|
1211 |
self.show_as_radio = None |
|
1212 |
changed = True |
|
1213 |
return changed |
|
1214 | ||
1215 |
def init_with_xml(self, element, charset, include_id=False): |
|
1216 |
super(ItemField, self).init_with_xml(element, charset, include_id=include_id) |
|
1217 |
if getattr(element.find('show_as_radio'), 'text', None) == 'True': |
|
1218 |
self.display_mode = 'radio' |
|
1219 | ||
1203 | 1220 |
def get_options(self, mode=None): |
1204 | 1221 |
if self.data_source: |
1205 | 1222 |
return [x[:3] for x in data_sources.get_items(self.data_source, mode=mode)] |
... | ... | |
1223 | 1240 |
kwargs['options'] = self.get_options() |
1224 | 1241 |
if not kwargs.get('options'): |
1225 | 1242 |
kwargs['options'] = [(None, '---')] |
1226 |
if self.show_as_radio:
|
|
1243 |
if self.display_mode == 'radio':
|
|
1227 | 1244 |
self.widget_class = RadiobuttonsWidget |
1228 | 1245 |
if type(kwargs['options'][0]) is str: |
1229 | 1246 |
first_items = [x for x in kwargs['options'][:3]] |
... | ... | |
1322 | 1339 |
WidgetField.fill_admin_form(self, form) |
1323 | 1340 |
form.add(CheckboxWidget, 'in_filters', title=_('Display in default filters'), |
1324 | 1341 |
value=self.in_filters, advanced=True) |
1325 |
form.add(CheckboxWidget, 'show_as_radio', title = _('Show as radio buttons'), |
|
1326 |
value = self.show_as_radio) |
|
1342 |
options = [('list', _('List')), |
|
1343 |
('radio', _('Radio buttons')), |
|
1344 |
] |
|
1345 |
form.add(RadiobuttonsWidget, 'display_mode', |
|
1346 |
title=_('Display Mode'), |
|
1347 |
options=options, |
|
1348 |
value=self.display_mode) |
|
1327 | 1349 |
form.add(WidgetList, 'items', title = _('Items'), element_type = StringWidget, |
1328 | 1350 |
value = self.items, required = False, |
1329 | 1351 |
element_kwargs = {'render_br': False, 'size': 50}, |
... | ... | |
1341 | 1363 | |
1342 | 1364 |
def get_admin_attributes(self): |
1343 | 1365 |
return WidgetField.get_admin_attributes(self) + ['items', |
1344 |
'show_as_radio', 'data_source', 'in_filters', 'anonymise',
|
|
1366 |
'display_mode', 'data_source', 'in_filters', 'anonymise',
|
|
1345 | 1367 |
'display_disabled_items'] |
1346 | 1368 | |
1347 | 1369 |
def check_admin_form(self, form): |
1348 |
- |