diff --git a/tests/admin_pages/test_form.py b/tests/admin_pages/test_form.py
index 59d026118..027810192 100644
--- a/tests/admin_pages/test_form.py
+++ b/tests/admin_pages/test_form.py
@@ -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()
diff --git a/wcs/fields.py b/wcs/fields.py
index 6ab5d7e63..d7c7d53cb 100644
--- a/wcs/fields.py
+++ b/wcs/fields.py
@@ -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('%(label)s') % {
+ '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('%(label)s') % {
+ '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('%(label)s') % {
+ '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':