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':