settings: add wcs templatetags by default (#58415)
This commit is contained in:
parent
a67233d6f5
commit
1673d2def7
|
@ -963,7 +963,7 @@ class WcsCardInfosCell(CardMixin, CellBase):
|
|||
def get_card_id(self, context):
|
||||
if self.card_id:
|
||||
try:
|
||||
card_id = Template('{%% load wcs %%}%s' % self.card_id).render(Context(context))
|
||||
card_id = Template(self.card_id).render(Context(context))
|
||||
except (VariableDoesNotExist, TemplateSyntaxError):
|
||||
return None
|
||||
else:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{% load wcs %}{% spaceless %}
|
||||
{% spaceless %}
|
||||
{% if field.type == "text" and mode != 'inline' and value %}
|
||||
<div class="value">{{ field|format_text:value }}</div>
|
||||
{% else %}
|
||||
|
|
|
@ -120,6 +120,7 @@ TEMPLATES = [
|
|||
'builtins': [
|
||||
'combo.public.templatetags.combo',
|
||||
'django.contrib.humanize.templatetags.humanize',
|
||||
'combo.apps.wcs.templatetags.wcs',
|
||||
],
|
||||
},
|
||||
},
|
||||
|
|
|
@ -65,39 +65,39 @@ def test_context(context):
|
|||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_objects(mock_send, settings, context, nocache):
|
||||
# lazy filters
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo" }}')
|
||||
t = Template('{{ cards|objects:"foo" }}')
|
||||
assert t.render(context).startswith(
|
||||
'<combo.apps.wcs.context_processors.LazyCardDefObjectsManager object at'
|
||||
)
|
||||
assert mock_send.call_args_list == [] # lazy
|
||||
t = Template('{% load wcs %}{{ cards|objects:"default:foo" }}')
|
||||
t = Template('{{ cards|objects:"default:foo" }}')
|
||||
assert t.render(context).startswith(
|
||||
'<combo.apps.wcs.context_processors.LazyCardDefObjectsManager object at'
|
||||
)
|
||||
assert mock_send.call_args_list == [] # lazy
|
||||
|
||||
# test filters evaluation
|
||||
t = Template('{% load wcs %}{% for card in cards|objects:"foo" %}{{ card.id }} {% endfor %}')
|
||||
t = Template('{% for card in cards|objects:"foo" %}{{ card.id }} {% endfor %}')
|
||||
assert t.render(context) == "1 2 "
|
||||
assert mock_send.call_args_list[0][0][0].url.startswith(
|
||||
'http://127.0.0.1:8999/api/cards/foo/list?'
|
||||
) # primary service
|
||||
t = Template('{% load wcs %}{{ cards|objects:"default:foo"|list }}')
|
||||
t = Template('{{ cards|objects:"default:foo"|list }}')
|
||||
t.render(context)
|
||||
assert mock_send.call_args_list[0][0][0].url.startswith('http://127.0.0.1:8999/api/cards/foo/list?')
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% load wcs %}{{ cards|objects:"other:foo"|list }}')
|
||||
t = Template('{{ cards|objects:"other:foo"|list }}')
|
||||
t.render(context)
|
||||
assert mock_send.call_args_list[0][0][0].url.startswith('http://127.0.0.2:8999/api/cards/foo/list?')
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% load wcs %}{{ cards|objects:"unknown:foo"|list }}')
|
||||
t = Template('{{ cards|objects:"unknown:foo"|list }}')
|
||||
t.render(context)
|
||||
assert mock_send.call_args_list == [] # unknown, not evaluated
|
||||
|
||||
# test card_id with variable
|
||||
context['foobar'] = 'some-slug'
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% load wcs %}{{ cards|objects:foobar|list }}')
|
||||
t = Template('{{ cards|objects:foobar|list }}')
|
||||
t.render(context)
|
||||
assert mock_send.call_args_list[0][0][0].url.startswith('http://127.0.0.1:8999/api/cards/some-slug/list?')
|
||||
|
||||
|
@ -106,49 +106,49 @@ def test_objects(mock_send, settings, context, nocache):
|
|||
KNOWN_SERVICES['wcs'] = {'default': {'url': 'http://127.0.0.3:8999/'}}
|
||||
settings.KNOWN_SERVICES = KNOWN_SERVICES
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% load wcs %}{{ cards|objects:"bar"|list }}')
|
||||
t = Template('{{ cards|objects:"bar"|list }}')
|
||||
t.render(context)
|
||||
assert mock_send.call_args_list[0][0][0].url.startswith('http://127.0.0.3:8999/api/cards/bar/list?')
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_with_custom_view(mock_send, context, nocache):
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|with_custom_view:"foobar"|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|with_custom_view:"foobar"|list }}')
|
||||
t.render(context)
|
||||
assert mock_send.call_args_list[0][0][0].url.startswith(
|
||||
'http://127.0.0.1:8999/api/cards/foo/list/foobar?'
|
||||
) # primary service
|
||||
t = Template('{% load wcs %}{{ cards|objects:"default:foo"|with_custom_view:"foobar"|list }}')
|
||||
t = Template('{{ cards|objects:"default:foo"|with_custom_view:"foobar"|list }}')
|
||||
t.render(context)
|
||||
assert mock_send.call_args_list[0][0][0].url.startswith(
|
||||
'http://127.0.0.1:8999/api/cards/foo/list/foobar?'
|
||||
)
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% load wcs %}{{ cards|objects:"other:foo"|with_custom_view:"foobar"|list }}')
|
||||
t = Template('{{ cards|objects:"other:foo"|with_custom_view:"foobar"|list }}')
|
||||
t.render(context)
|
||||
assert mock_send.call_args_list[0][0][0].url.startswith(
|
||||
'http://127.0.0.2:8999/api/cards/foo/list/foobar?'
|
||||
)
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% load wcs %}{{ cards|objects:"unknown:foo"|with_custom_view:"foobar"|list }}')
|
||||
t = Template('{{ cards|objects:"unknown:foo"|with_custom_view:"foobar"|list }}')
|
||||
t.render(context)
|
||||
assert mock_send.call_args_list == [] # unknown, not evaluated
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_full(mock_send, context, nocache):
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|list }}')
|
||||
t.render(context)
|
||||
assert 'full=on&' not in mock_send.call_args_list[0][0][0].url
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|get_full|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|get_full|list }}')
|
||||
t.render(context)
|
||||
assert 'full=on&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
def test_errors(mock_send, context, nocache):
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|list }}')
|
||||
|
||||
with mock.patch('combo.apps.wcs.utils.requests.get') as requests_get:
|
||||
mock_resp = Response()
|
||||
|
@ -180,12 +180,12 @@ def test_errors(mock_send, context, nocache):
|
|||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_access_control(mock_send, context, nocache):
|
||||
# no user in context
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|list }}')
|
||||
t.render(context)
|
||||
assert 'NameID' not in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email' not in mock_send.call_args_list[0][0][0].url
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|access_control:request.user|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|access_control:request.user|list }}')
|
||||
t.render(context)
|
||||
assert 'NameID=&' in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email=&' in mock_send.call_args_list[0][0][0].url
|
||||
|
@ -193,12 +193,12 @@ def test_access_control(mock_send, context, nocache):
|
|||
# current user in anonymous
|
||||
context['request'].user = MockAnonymousUser()
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|list }}')
|
||||
t.render(context)
|
||||
assert 'NameID' not in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email' not in mock_send.call_args_list[0][0][0].url
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|access_control:request.user|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|access_control:request.user|list }}')
|
||||
t.render(context)
|
||||
assert 'NameID=&' in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email=&' in mock_send.call_args_list[0][0][0].url
|
||||
|
@ -206,12 +206,12 @@ def test_access_control(mock_send, context, nocache):
|
|||
# current user with uuid
|
||||
context['request'].user = MockUserWithNameId()
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|list }}')
|
||||
t.render(context)
|
||||
assert 'NameID' not in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email' not in mock_send.call_args_list[0][0][0].url
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|access_control:request.user|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|access_control:request.user|list }}')
|
||||
t.render(context)
|
||||
assert 'NameID=xyz&' in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email' not in mock_send.call_args_list[0][0][0].url
|
||||
|
@ -219,12 +219,12 @@ def test_access_control(mock_send, context, nocache):
|
|||
# current user without uuid
|
||||
context['request'].user = MockUser()
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|list }}')
|
||||
t.render(context)
|
||||
assert 'NameID' not in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email' not in mock_send.call_args_list[0][0][0].url
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|access_control:request.user|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|access_control:request.user|list }}')
|
||||
t.render(context)
|
||||
assert 'NameID' not in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email=foo%40example.net&' in mock_send.call_args_list[0][0][0].url
|
||||
|
@ -232,19 +232,19 @@ def test_access_control(mock_send, context, nocache):
|
|||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_count(mock_send, context, nocache):
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|count }}')
|
||||
t = Template('{{ cards|objects:"foo"|count }}')
|
||||
assert t.render(context) == "2"
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_filter(mock_send, context, nocache):
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|filter_by:"foo"|filter_value:"bar"|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|filter_by:"foo"|filter_value:"bar"|list }}')
|
||||
t.render(context)
|
||||
assert 'filter-foo=bar&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
mock_send.reset_mock()
|
||||
t = Template(
|
||||
'{% load wcs %}{{ cards|objects:"foo"|filter_by:"foo"|filter_value:"bar"|filter_by:"foo2"|filter_value:"bar2"|list }}'
|
||||
'{{ cards|objects:"foo"|filter_by:"foo"|filter_value:"bar"|filter_by:"foo2"|filter_value:"bar2"|list }}'
|
||||
)
|
||||
t.render(context)
|
||||
assert 'filter-foo=bar&' in mock_send.call_args_list[0][0][0].url
|
||||
|
@ -252,24 +252,24 @@ def test_filter(mock_send, context, nocache):
|
|||
|
||||
# check boolean
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|filter_by:"foo"|filter_value:True|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|filter_by:"foo"|filter_value:True|list }}')
|
||||
t.render(context)
|
||||
assert 'filter-foo=true&' in mock_send.call_args_list[0][0][0].url
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|filter_by:"foo"|filter_value:False|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|filter_by:"foo"|filter_value:False|list }}')
|
||||
t.render(context)
|
||||
assert 'filter-foo=false&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
# check None
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|filter_by:"foo"|filter_value:None|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|filter_by:"foo"|filter_value:None|list }}')
|
||||
t.render(context)
|
||||
assert 'filter-foo=&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_filter_by_user(mock_send, context, nocache):
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|filter_by_user:request.user|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|filter_by_user:request.user|list }}')
|
||||
t.render(context)
|
||||
assert 'filter-user-uuid' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
|
@ -291,41 +291,43 @@ def test_filter_by_user(mock_send, context, nocache):
|
|||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_filter_by_status(mock_send, context, nocache):
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|list }}')
|
||||
t.render(context)
|
||||
assert 'filter=&' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|filter_by_status:None|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|filter_by_status:None|list }}')
|
||||
t.render(context)
|
||||
assert 'filter=&' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|filter_by_status:""|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|filter_by_status:""|list }}')
|
||||
t.render(context)
|
||||
assert 'filter=&' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|filter_by_status:"foobar"|list }}')
|
||||
t = Template('{{ cards|objects:"foo"|filter_by_status:"foobar"|list }}')
|
||||
t.render(context)
|
||||
assert 'filter=foobar&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_getlist(mock_send, context, nocache):
|
||||
t = Template('{% load wcs %}{% for v in cards|objects:"foo"|getlist:"id" %}{{ v }},{% endfor %}')
|
||||
t = Template('{% for v in cards|objects:"foo"|getlist:"id" %}{{ v }},{% endfor %}')
|
||||
t.render(context)
|
||||
assert t.render(context) == "1,2,"
|
||||
t = Template('{% load wcs %}{% for v in cards|objects:"foo"|getlist:"fields" %}{{ v }},{% endfor %}')
|
||||
t = Template('{% for v in cards|objects:"foo"|getlist:"fields" %}{{ v }},{% endfor %}')
|
||||
t.render(context)
|
||||
assert t.render(context) == "{'foo': 'bar'},{'foo': 'baz'},"
|
||||
t = Template(
|
||||
'{% load wcs %}{% for v in cards|objects:"foo"|getlist:"fields"|getlist:"foo" %}{{ v }},{% endfor %}'
|
||||
)
|
||||
t = Template('{% for v in cards|objects:"foo"|getlist:"fields"|getlist:"foo" %}{{ v }},{% endfor %}')
|
||||
t.render(context)
|
||||
assert t.render(context) == "bar,baz,"
|
||||
t = Template(
|
||||
'{% load wcs %}{% for v in cards|objects:"foo"|getlist:"fields"|getlist:"unknown" %}{{ v }},{% endfor %}'
|
||||
)
|
||||
t = Template('{% for v in cards|objects:"foo"|getlist:"fields"|getlist:"unknown" %}{{ v }},{% endfor %}')
|
||||
t.render(context)
|
||||
assert t.render(context) == "None,None,"
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_with_explicit_load_wcs(mock_send, context, nocache):
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|count }}')
|
||||
assert t.render(context) == "2"
|
||||
|
|
Loading…
Reference in New Issue