From 77b277fc63ca972d7275902e0c1846b49aaab986 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laur=C3=A9line=20Gu=C3=A9rin?= Date: Tue, 15 Nov 2022 09:05:30 +0100 Subject: [PATCH] wcs: add filters to get only fields, evolution, etc (#71299) added filters: - |include_fields - |include_evolutions - |include_roles - |include_submission - |include_workflow - |include_workflow_data --- .../wcs/context_processors.py | 30 +++++++++++++++++++ .../wcs/templatetags/wcs.py | 30 +++++++++++++++++++ tests/test_wcs.py | 14 +++++++++ 3 files changed, 74 insertions(+) diff --git a/publik_django_templatetags/wcs/context_processors.py b/publik_django_templatetags/wcs/context_processors.py index b78607d..2338936 100644 --- a/publik_django_templatetags/wcs/context_processors.py +++ b/publik_django_templatetags/wcs/context_processors.py @@ -69,6 +69,36 @@ class LazyCardDefObjectsManager: qs._filters['full'] = 'on' return qs + def include_fields(self): + qs = self._clone() + qs._filters['include-fields'] = 'on' + return qs + + def include_evolution(self): + qs = self._clone() + qs._filters['include-evolution'] = 'on' + return qs + + def include_roles(self): + qs = self._clone() + qs._filters['include-roles'] = 'on' + return qs + + def include_submission(self): + qs = self._clone() + qs._filters['include-submission'] = 'on' + return qs + + def include_workflow(self): + qs = self._clone() + qs._filters['include-workflow'] = 'on' + return qs + + def include_workflow_data(self): + qs = self._clone() + qs._filters['include-workflow-data'] = 'on' + return qs + def access_control(self, user): qs = self._clone() qs._user = user diff --git a/publik_django_templatetags/wcs/templatetags/wcs.py b/publik_django_templatetags/wcs/templatetags/wcs.py index 57669ca..d8b1586 100644 --- a/publik_django_templatetags/wcs/templatetags/wcs.py +++ b/publik_django_templatetags/wcs/templatetags/wcs.py @@ -34,6 +34,36 @@ def get_full(queryset): return queryset.get_full() +@register.filter +def include_fields(queryset): + return queryset.include_fields() + + +@register.filter +def include_evolution(queryset): + return queryset.include_evolution() + + +@register.filter +def include_roles(queryset): + return queryset.include_roles() + + +@register.filter +def include_submission(queryset): + return queryset.include_submission() + + +@register.filter +def include_workflow(queryset): + return queryset.include_workflow() + + +@register.filter +def include_workflow_data(queryset): + return queryset.include_workflow_data() + + @register.filter def access_control(queryset, user): return queryset.access_control(user) diff --git a/tests/test_wcs.py b/tests/test_wcs.py index 250c3bc..fa8a0b7 100644 --- a/tests/test_wcs.py +++ b/tests/test_wcs.py @@ -146,6 +146,20 @@ def test_full(mock_send, context, nocache): assert 'full=on&' in mock_send.call_args_list[0][0][0].url +@mock.patch('requests.Session.send', side_effect=mocked_requests_send) +def test_include_filters(mock_send, context, nocache): + for part in ['fields', 'evolution', 'roles', 'submission', 'workflow', 'workflow_data']: + _filter = 'include_%s' % part + param = _filter.replace('_', '-') + t = Template('{{ cards|objects:"foo"|list }}') + t.render(context) + assert '%s=on&' % param not in mock_send.call_args_list[0][0][0].url + mock_send.reset_mock() + t = Template('{{ cards|objects:"foo"|%s|list }}' % _filter) + t.render(context) + assert '%s=on&' % param in mock_send.call_args_list[0][0][0].url + + @mock.patch('requests.Session.send', side_effect=mocked_requests_send) def test_errors(mock_send, context, nocache): t = Template('{{ cards|objects:"foo"|list }}')