From b38496deaaaa5175c954143aa4c8313ad9dc86d5 Mon Sep 17 00:00:00 2001 From: bliu Date: Wed, 2 Sep 2015 16:39:57 +0800 Subject: [PATCH] PDC-947,Make bootable filter on images case-insensitive and change the name of the filter method. --- pdc/apps/common/filters.py | 2 +- pdc/apps/component/filters.py | 4 ++-- pdc/apps/package/filters.py | 2 ++ pdc/apps/package/tests.py | 10 ++++++++++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/pdc/apps/common/filters.py b/pdc/apps/common/filters.py index 01b9acfe..8ad3c2c2 100644 --- a/pdc/apps/common/filters.py +++ b/pdc/apps/common/filters.py @@ -214,7 +214,7 @@ def filter(self, qs, value): return super(NullableCharFilter, self).filter(qs, value) -class CustomizeBooleanFilter(django_filters.CharFilter): +class CaseInsensitiveBooleanFilter(django_filters.CharFilter): """ Customize boolean filter that allows filtering items with below values: True: ('true', 't', '1'), regardless of letter case sensitive diff --git a/pdc/apps/component/filters.py b/pdc/apps/component/filters.py index bb8abd40..1b8b7037 100644 --- a/pdc/apps/component/filters.py +++ b/pdc/apps/component/filters.py @@ -25,7 +25,7 @@ from pdc.apps.common.filters import (ComposeFilterSet, value_is_not_empty, MultiValueFilter, - CustomizeBooleanFilter) + CaseInsensitiveBooleanFilter) class RoleContactFilter(FilterSet): @@ -147,7 +147,7 @@ class ReleaseComponentFilter(ComposeFilterSet): widget=SelectMultiple) bugzilla_component = MultiValueFilter(name='bugzilla_component__name') brew_package = MultiValueFilter() - active = CustomizeBooleanFilter() + active = CaseInsensitiveBooleanFilter() type = CharFilter(name='type__name') @value_is_not_empty diff --git a/pdc/apps/package/filters.py b/pdc/apps/package/filters.py index 0afa663d..b8bd9908 100644 --- a/pdc/apps/package/filters.py +++ b/pdc/apps/package/filters.py @@ -9,6 +9,7 @@ import django_filters from pdc.apps.common.filters import MultiValueFilter, MultiIntFilter, NullableCharFilter +from pdc.apps.common.filters import CaseInsensitiveBooleanFilter from . import models @@ -47,6 +48,7 @@ class ImageFilter(django_filters.FilterSet): sha256 = MultiValueFilter() compose = MultiValueFilter(name='composeimage__variant_arch__variant__compose__compose_id', distinct=True) + bootable = CaseInsensitiveBooleanFilter() class Meta: model = models.Image diff --git a/pdc/apps/package/tests.py b/pdc/apps/package/tests.py index c63b0974..5b4883fc 100644 --- a/pdc/apps/package/tests.py +++ b/pdc/apps/package/tests.py @@ -373,6 +373,16 @@ def test_query_bootable(self): self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data.get('count'), 1) + def test_negative_bootable(self): + response = self.client.get(reverse('image-list'), {'bootable': 'false'}) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data.get('count'), 2) + + def test_active_bootable(self): + response = self.client.get(reverse('image-list'), {'bootable': 'true'}) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data.get('count'), 1) + def test_query_implant_md5(self): response = self.client.get(reverse('image-list'), {'implant_md5': 'a' * 32}) self.assertEqual(response.status_code, status.HTTP_200_OK)