From 878af8eafe388f72650f76f4de67fb4d98dabf84 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Thu, 25 Nov 2021 14:47:44 +0100 Subject: [PATCH] datasources: use extended_data_source in DataSourcesSubstitutionProxy (#58990) --- tests/test_datasource_users.py | 13 +++++++++++++ wcs/data_sources.py | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/tests/test_datasource_users.py b/tests/test_datasource_users.py index 65ac9d84..9e0a42a7 100644 --- a/tests/test_datasource_users.py +++ b/tests/test_datasource_users.py @@ -3,6 +3,7 @@ import pytest from wcs import data_sources from wcs.data_sources import NamedDataSource from wcs.qommon.http_request import HTTPRequest +from wcs.qommon.template import Template from .utilities import clean_temporary_pub, create_temporary_pub @@ -33,10 +34,16 @@ def test_datasource_users(pub): datasource.data_source = {'type': 'wcs:users'} datasource.store() + context = pub.substitutions.get_context_variables(mode='lazy') + tmpl = Template( + '{% for user in data_source.foo %}{{ user.text }}{% if not forloop.last %}, {% endif %}{% endfor %}' + ) + assert data_sources.get_items({'type': datasource.slug}) == [] assert data_sources.get_items(datasource.extended_data_source) == [] assert data_sources.get_structured_items({'type': datasource.slug}) == [] assert data_sources.get_structured_items(datasource.extended_data_source) == [] + assert tmpl.render(context) == '' users = [] for i in range(2): @@ -61,6 +68,7 @@ def test_datasource_users(pub): {'id': 1, 'text': 'John Doe 0'}, {'id': 2, 'text': 'John Doe 1'}, ] + assert tmpl.render(context) == 'John Doe 0, John Doe 1' datasource.users_included_roles = [role1.id] datasource.store() @@ -72,11 +80,13 @@ def test_datasource_users(pub): {'id': 1, 'text': 'John Doe 0'}, {'id': 2, 'text': 'John Doe 1'}, ] + assert tmpl.render(context) == 'John Doe 0, John Doe 1' datasource.users_included_roles = [role1.id, role2.id] datasource.store() assert data_sources.get_structured_items({'type': datasource.slug}) == [] assert data_sources.get_structured_items(datasource.extended_data_source) == [] + assert tmpl.render(context) == '' users[0].roles = [role1.id, role2.id] users[0].store() @@ -84,6 +94,7 @@ def test_datasource_users(pub): assert data_sources.get_structured_items(datasource.extended_data_source) == [ {'id': 1, 'text': 'John Doe 0'} ] + assert tmpl.render(context) == 'John Doe 0' users[0].roles = [role2.id] users[0].store() @@ -94,8 +105,10 @@ def test_datasource_users(pub): assert data_sources.get_structured_items(datasource.extended_data_source) == [ {'id': 1, 'text': 'John Doe 0'} ] + assert tmpl.render(context) == 'John Doe 0' datasource.users_excluded_roles = [role1.id, role2.id] datasource.store() assert data_sources.get_structured_items({'type': datasource.slug}) == [] assert data_sources.get_structured_items(datasource.extended_data_source) == [] + assert tmpl.render(context) == '' diff --git a/wcs/data_sources.py b/wcs/data_sources.py index bcdcf9f5..71b5bd1a 100644 --- a/wcs/data_sources.py +++ b/wcs/data_sources.py @@ -856,7 +856,7 @@ class StubNamedDataSource(NamedDataSource): class DataSourcesSubstitutionProxy: def __getattr__(self, attr): - return get_structured_items(NamedDataSource.get_by_slug(attr).data_source) + return get_structured_items(NamedDataSource.get_by_slug(attr).extended_data_source) def inspect_keys(self): return [] -- 2.33.0