backoffice: add link to datasources in form inspect page (#68841)
gitea-wip/wcs/pipeline/head Build started... Details

This commit is contained in:
Lauréline Guérin 2022-09-13 09:29:37 +02:00
parent 106c98192c
commit 7a9702e2d4
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 55 additions and 4 deletions

View File

@ -6,6 +6,7 @@ import xml.etree.ElementTree as ET
import pytest
import responses
from pyquery import PyQuery
from webtest import Upload
from wcs import fields
@ -3475,6 +3476,12 @@ def test_admin_form_inspect(pub):
carddef.name = 'Baz'
carddef.digest_templates = {'default': 'plop'}
carddef.store()
pub.custom_view_class.wipe()
custom_view = pub.custom_view_class()
custom_view.title = 'custom'
custom_view.formdef = carddef
custom_view.visibility = 'datasource'
custom_view.store()
Workflow.wipe()
workflow = Workflow(name='Workflow One')
@ -3524,6 +3531,12 @@ def test_admin_form_inspect(pub):
fields.ItemField(
id='7', label='Item field carddef data source', type='item', data_source={'type': 'carddef:baz'}
),
fields.ItemField(
id='70',
label='Item field carddef data source',
type='item',
data_source={'type': 'carddef:baz:custom'},
),
fields.ItemField(
id='8',
label='Item field json data source',
@ -3562,8 +3575,35 @@ def test_admin_form_inspect(pub):
)
assert resp.pyquery('[data-field-id="5"] .parameter-items').text() == 'Choices: One, Two, Three'
assert resp.pyquery('[data-field-id="6"] .parameter-data_source').text() == 'Data source: Foobar'
assert resp.pyquery('[data-field-id="6"] .parameter-data_source a').text() == 'Foobar'
assert (
resp.pyquery('[data-field-id="7"] .parameter-data_source').text() == 'Data source: card model - Baz'
resp.pyquery('[data-field-id="6"] .parameter-data_source a').attr['href']
== 'http://example.net/backoffice/settings/data-sources/1/'
)
assert resp.pyquery('[data-field-id="7"] .parameter-data_source').text() == 'Data source: card model: Baz'
assert resp.pyquery('[data-field-id="7"] .parameter-data_source a').text() == 'card model: Baz'
assert (
resp.pyquery('[data-field-id="7"] .parameter-data_source a').attr['href']
== 'http://example.net/backoffice/cards/1/'
)
assert (
resp.pyquery('[data-field-id="70"] .parameter-data_source').text()
== 'Data source: card model: Baz, custom view: custom'
)
assert (
PyQuery(resp.pyquery('[data-field-id="70"] .parameter-data_source a')[0]).text() == 'card model: Baz'
)
assert (
PyQuery(resp.pyquery('[data-field-id="70"] .parameter-data_source a')[0]).attr['href']
== 'http://example.net/backoffice/cards/1/'
)
assert (
PyQuery(resp.pyquery('[data-field-id="70"] .parameter-data_source a')[1]).text()
== 'custom view: custom'
)
assert (
PyQuery(resp.pyquery('[data-field-id="70"] .parameter-data_source a')[1]).attr['href']
== 'http://example.net/backoffice/data/baz/custom'
)
assert (
resp.pyquery('[data-field-id="8"] .parameter-data_source').text()

View File

@ -798,9 +798,17 @@ class Field:
except KeyError:
return _('deleted card model')
custom_view = CardDef.get_data_source_custom_view(value['type'], carddef=carddef)
r = htmltext('<a href="%(url)s">%(label)s</a>') % {
'label': _('card model: %s') % carddef.name,
'url': carddef.get_admin_url(),
}
if custom_view:
return _('card model: %s, custom view: %s') % (carddef.name, custom_view.title)
return '%s - %s' % (_('card model'), carddef.name)
r += ', '
r += htmltext('<a href="%(url)s">%(label)s</a>') % {
'label': _('custom view: %s') % custom_view.title,
'url': '%s%s' % (carddef.get_url(), custom_view.get_url_slug()),
}
return r
data_source_types = {
'json': _('JSON URL'),
@ -814,7 +822,10 @@ class Field:
from wcs.data_sources import NamedDataSource
data_source = NamedDataSource.get_by_slug(value['type'])
return data_source.name
return htmltext('<a href="%(url)s">%(label)s</a>') % {
'label': data_source.name,
'url': data_source.get_admin_url(),
}
def get_condition_parameter_view_value(self, widget):
if not self.condition or self.condition.get('type') == 'none':