0001-fields-get-item-display-value-from-database-72299.patch
tests/form_pages/test_all.py | ||
---|---|---|
6223 | 6223 |
for carddata in carddef.data_class().select(): |
6224 | 6224 |
carddata.store() |
6225 | 6225 | |
6226 |
resp = get_app(pub).get('/test/') |
|
6226 |
app = get_app(pub) |
|
6227 |
resp = app.get('/test/') |
|
6227 | 6228 |
assert len(resp.form['f0'].options) == 10 |
6228 | 6229 |
assert {x[0] for x in resp.form['f0'].options} == baz_ids |
6229 | 6230 |
resp.form['f0'].value = baz_id |
... | ... | |
6232 | 6233 |
assert formdef.data_class().select()[0].data['0'] == baz_id |
6233 | 6234 |
assert formdef.data_class().select()[0].data['0_display'] == 'Xattr%sY' % baz_id |
6234 | 6235 | |
6236 |
resp = app.get(formdef.data_class().select()[0].get_url()) |
|
6237 |
assert resp.pyquery('.field-type-item .value').text() == 'Xattr%sY' % baz_id |
|
6238 |
assert resp.pyquery('.field-type-item .value a').length == 0 # no link to card |
|
6239 | ||
6240 |
# change digests |
|
6241 |
carddef.digest_templates['custom-view:%s' % custom_view.slug] = 'Y{{form_var_attr}}Z' |
|
6242 |
carddef.store() |
|
6243 |
for carddata in carddef.data_class().select(): |
|
6244 |
carddata.store() |
|
6245 | ||
6246 |
resp = app.get(formdef.data_class().select()[0].get_url()) |
|
6247 |
assert resp.pyquery('.field-type-item .value').text() == 'Yattr%sZ' % baz_id |
|
6248 | ||
6249 |
# remove card (back to value stored at first) |
|
6250 |
carddef.data_class().wipe() |
|
6251 |
resp = app.get(formdef.data_class().select()[0].get_url()) |
|
6252 |
assert resp.pyquery('.field-type-item .value').text() == 'Xattr%sY' % baz_id |
|
6253 | ||
6235 | 6254 | |
6236 | 6255 |
def test_item_field_from_custom_view_on_cards_filter_status(pub): |
6237 | 6256 |
pub.role_class.wipe() |
wcs/fields.py | ||
---|---|---|
2313 | 2313 |
if value and data_source is None: |
2314 | 2314 |
return get_publisher().translate(value) or '' |
2315 | 2315 |
value = super().get_view_value(value) |
2316 |
if not ( |
|
2317 |
value_id |
|
2318 |
and get_request() |
|
2319 |
and get_request().is_in_backoffice() |
|
2320 |
and self.data_source |
|
2321 |
and self.data_source.get('type', '').startswith('carddef:') |
|
2322 |
): |
|
2316 |
if not (value_id and self.data_source and self.data_source.get('type', '').startswith('carddef:')): |
|
2323 | 2317 |
return value |
2324 | 2318 |
carddef = self.get_carddef() |
2325 | 2319 |
if not carddef: |
... | ... | |
2328 | 2322 |
carddata = carddef.data_class().get(value_id) |
2329 | 2323 |
except KeyError: |
2330 | 2324 |
return value |
2331 |
if not carddef.is_user_allowed_read(get_request().user, carddata): |
|
2325 |
parts = data_source.data_source['type'].split(':') |
|
2326 |
value = (carddata.digests or {}).get('default') or value |
|
2327 |
if len(parts) == 3: |
|
2328 |
digest_key = 'custom-view:%s' % parts[-1] |
|
2329 |
value = (carddata.digests or {}).get(digest_key) or value |
|
2330 |
if not ( |
|
2331 |
get_request() |
|
2332 |
and get_request().is_in_backoffice() |
|
2333 |
and carddef.is_user_allowed_read(get_request().user, carddata) |
|
2334 |
): |
|
2332 | 2335 |
return value |
2333 | 2336 |
return htmltext('<a href="%s">' % carddata.get_url(backoffice=True)) + htmltext('%s</a>') % value |
2334 | 2337 | |
2335 |
- |