0001-cards-make-id-lookup-work-with-display-id-52647.patch
tests/test_carddef.py | ||
---|---|---|
330 | 330 |
assert tmpl.render(context) == '0' |
331 | 331 | |
332 | 332 | |
333 |
def test_data_source_access_by_id(pub): |
|
334 |
CardDef.wipe() |
|
335 |
carddef = CardDef() |
|
336 |
carddef.name = 'foo' |
|
337 |
carddef.fields = [ |
|
338 |
StringField(id='1', label='Test', type='string', varname='foo'), |
|
339 |
] |
|
340 |
carddef.digest_template = '{{ form_var_foo }}' |
|
341 |
carddef.store() |
|
342 |
carddef.data_class().wipe() |
|
343 | ||
344 |
carddata = carddef.data_class()() |
|
345 |
carddata.data = {'1': 'hello world'} |
|
346 |
carddata.just_created() |
|
347 |
carddata.store() |
|
348 | ||
349 |
carddata2 = carddef.data_class()() |
|
350 |
carddata2.data = {'1': 'bye'} |
|
351 |
carddata2.just_created() |
|
352 |
carddata2.store() |
|
353 | ||
354 |
cards = CardDef.get_data_source_items('carddef:foo', get_by_id=carddata.id) |
|
355 |
assert len(cards) == 1 |
|
356 |
assert cards[0]['text'] == 'hello world' |
|
357 | ||
358 |
cards = CardDef.get_data_source_items('carddef:foo', get_by_id=carddata2.id) |
|
359 |
assert len(cards) == 1 |
|
360 |
assert cards[0]['text'] == 'bye' |
|
361 | ||
362 |
cards = CardDef.get_data_source_items('carddef:foo', get_by_id=carddata.get_display_id()) |
|
363 |
assert len(cards) == 1 |
|
364 |
assert cards[0]['text'] == 'hello world' |
|
365 | ||
366 |
cards = CardDef.get_data_source_items('carddef:foo', get_by_id=carddata2.get_display_id()) |
|
367 |
assert len(cards) == 1 |
|
368 |
assert cards[0]['text'] == 'bye' |
|
369 | ||
370 | ||
333 | 371 |
def test_data_source_access_invalid_id(pub): |
334 | 372 |
CardDef.wipe() |
335 | 373 |
carddef = CardDef() |
tests/test_workflows.py | ||
---|---|---|
4669 | 4669 |
} |
4670 | 4670 |
carddata.just_created() |
4671 | 4671 |
carddata.store() |
4672 |
latest_carddata = carddata |
|
4672 | 4673 |
latest_carddata_id = carddata.id |
4673 | 4674 |
ds = {'type': 'carddef:%s' % carddef.url_name} |
4674 | 4675 | |
... | ... | |
4713 | 4714 |
assert formdata.data['bo1_display'] == 'baz' |
4714 | 4715 |
assert formdata.data['bo1_structured']['attr'] == 'attr2' |
4715 | 4716 | |
4717 |
# reset, and get by display id value |
|
4718 |
formdata.data = {} |
|
4719 |
formdata.store() |
|
4720 |
item.fields = [{'field_id': 'bo1', 'value': latest_carddata.get_display_id()}] |
|
4721 |
item.perform(formdata) |
|
4722 |
formdata = formdef.data_class().get(formdata.id) |
|
4723 |
assert formdata.data['bo1'] == str(latest_carddata_id) |
|
4724 |
assert formdata.data['bo1_display'] == 'baz' |
|
4725 |
assert formdata.data['bo1_structured']['attr'] == 'attr2' |
|
4726 | ||
4716 | 4727 |
# reset, and get by text value |
4717 | 4728 |
formdata.data = {} |
4718 | 4729 |
formdata.store() |
wcs/carddef.py | ||
---|---|---|
209 | 209 |
if query: |
210 | 210 |
criterias.append(ILike('digest', query)) |
211 | 211 |
if get_by_id: |
212 |
if int(get_by_id) >= 2 ** 31: |
|
213 |
# out of range for postgresql integer type; would raise |
|
214 |
# DataError. |
|
215 |
return [] |
|
216 |
criterias.append(Equal('id', get_by_id)) |
|
212 |
try: |
|
213 |
if int(get_by_id) >= 2 ** 31: |
|
214 |
# out of range for postgresql integer type; would raise |
|
215 |
# DataError. |
|
216 |
return [] |
|
217 |
except ValueError: |
|
218 |
# get_by_id not an integer, it could be id_display |
|
219 |
criterias.append(Equal('id_display', get_by_id)) |
|
220 |
else: |
|
221 |
criterias.append(Equal('id', get_by_id)) |
|
217 | 222 |
if get_by_text: |
218 | 223 |
criterias.append(Equal('digest', get_by_text)) |
219 | 224 |
wcs/data_sources.py | ||
---|---|---|
690 | 690 |
def get_card_structured_value_by_id(self, option_id): |
691 | 691 |
from wcs.carddef import CardDef |
692 | 692 | |
693 |
values = [] |
|
694 |
try: |
|
695 |
int(option_id) |
|
696 |
except ValueError: |
|
697 |
pass |
|
698 |
else: |
|
699 |
values = CardDef.get_data_source_items(self.type, get_by_id=option_id) |
|
693 |
values = CardDef.get_data_source_items(self.type, get_by_id=option_id) |
|
700 | 694 |
if not values: |
701 | 695 |
values = CardDef.get_data_source_items(self.type, get_by_text=option_id) |
702 | 696 |
if not values: |
703 |
- |