Skip to content

Commit 65a91f8

Browse files
committed
fix: use True value for isnull operator
1 parent b127321 commit 65a91f8

File tree

2 files changed

+28
-18
lines changed

2 files changed

+28
-18
lines changed

advanced_filters/forms.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def _build_query_dict(self, formdata=None):
8888
formdata = self.cleaned_data
8989
key = "{field}__{operator}".format(**formdata)
9090
if formdata['operator'] == "isnull":
91-
return {key: None}
91+
return {key: True}
9292
elif formdata['operator'] == "istrue":
9393
return {formdata['field']: True}
9494
elif formdata['operator'] == "isfalse":

advanced_filters/tests/test_forms.py

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -71,23 +71,6 @@ def test_build_field_choices(self):
7171
'fname': 'First name'
7272
}
7373

74-
def test_build_query_dict(self):
75-
data = self.data.copy()
76-
form = AdvancedFilterQueryForm(self.fields, data=data)
77-
assert form._build_query_dict() == {'fname__iexact': 'john'}
78-
79-
data['operator'] = 'isnull'
80-
form = AdvancedFilterQueryForm(self.fields, data=data)
81-
assert form._build_query_dict() == {'fname__isnull': None}
82-
83-
data['operator'] = 'istrue'
84-
form = AdvancedFilterQueryForm(self.fields, data=data)
85-
assert form._build_query_dict() == {'fname': True}
86-
87-
data['operator'] = 'isfalse'
88-
form = AdvancedFilterQueryForm(self.fields, data=data)
89-
assert form._build_query_dict() == {'fname': False}
90-
9174
def test_make_query(self):
9275
form = AdvancedFilterQueryForm(self.fields, data=self.data)
9376
assert form.is_valid()
@@ -201,6 +184,33 @@ def test_all_operators_are_restored(self):
201184
assert res == expected[i]
202185

203186

187+
@pytest.mark.parametrize("fields, data, expected", [
188+
(
189+
dict(bday='birthday', fname='first name'),
190+
dict(field='fname', value='john', operator='iexact'),
191+
{'fname__iexact': 'john'}
192+
),
193+
(
194+
dict(bday='birthday', fname='first name'),
195+
dict(field='fname', value='john', operator='isnull'),
196+
{'fname__isnull': True}
197+
),
198+
(
199+
dict(bday='birthday', fname='first name'),
200+
dict(field='fname', value='john', operator='istrue'),
201+
{'fname': True}
202+
),
203+
(
204+
dict(bday='birthday', fname='first name'),
205+
dict(field='fname', value='john', operator='isfalse'),
206+
{'fname': False}
207+
),
208+
])
209+
def test_build_query_dict(data, fields, expected):
210+
form = AdvancedFilterQueryForm(fields, data=data)
211+
assert form._build_query_dict() == expected
212+
213+
204214
class CommonFormTest(TestCase):
205215
mgmg_form_data = {
206216
'form-TOTAL_FORMS': 1,

0 commit comments

Comments
 (0)