wcs: add filter_by_user filter (#49406)

This commit is contained in:
Lauréline Guérin 2020-12-15 16:01:16 +01:00
parent 1ec70f4b16
commit 1a31eea2e3
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
3 changed files with 33 additions and 0 deletions

View File

@ -73,6 +73,12 @@ class LazyCardDefObjectsManager(object):
qs._filters['filter-%s' % self.pending_attr] = value
return qs
def filter_by_user(self, user):
qs = self._clone()
if user and user.is_authenticated and user.get_name_id():
qs._filters['filter-user-uuid'] = user.get_name_id()
return qs
def _get_results_from_wcs(self):
service = get_wcs_services().get(self._service_key)
if not service:

View File

@ -43,3 +43,8 @@ def filter_by(queryset, attribute):
@register.filter
def filter_value(queryset, value):
return queryset.apply_filter_value(value)
@register.filter
def filter_by_user(queryset, user):
return queryset.filter_by_user(user)

View File

@ -222,3 +222,25 @@ def test_filter(mock_send, context, nocache):
t = Template('{% load wcs %}{{ 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.render(context)
assert 'filter-user-uuid' not in mock_send.call_args_list[0][0][0].url
context['request'].user = MockAnonymousUser()
mock_send.reset_mock()
t.render(context)
assert 'filter-user-uuid' not in mock_send.call_args_list[0][0][0].url
context['request'].user = MockUser()
mock_send.reset_mock()
t.render(context)
assert 'filter-user-uuid' not in mock_send.call_args_list[0][0][0].url
context['request'].user = MockUserWithNameId()
mock_send.reset_mock()
t.render(context)
assert 'filter-user-uuid=xyz&' in mock_send.call_args_list[0][0][0].url