fix: Handle None filters in db query
This commit is contained in:
parent
a31676809f
commit
5ce3937d79
2 changed files with 13 additions and 3 deletions
|
|
@ -244,7 +244,13 @@ class Query:
|
|||
_operator = OPERATOR_MAP[value[0]]
|
||||
conditions = conditions.where(_operator(Field(key), value[1]))
|
||||
else:
|
||||
conditions = conditions.where(_operator(Field(key), value))
|
||||
if value is not None:
|
||||
conditions = conditions.where(_operator(Field(key), value))
|
||||
else:
|
||||
_table = conditions._from[0]
|
||||
field = getattr(_table, key)
|
||||
conditions = conditions.where(field.isnull())
|
||||
|
||||
conditions = self.add_conditions(conditions, **kwargs)
|
||||
return conditions
|
||||
|
||||
|
|
|
|||
|
|
@ -97,6 +97,12 @@ class TestReportview(unittest.TestCase):
|
|||
self.assertFalse(result
|
||||
in DatabaseQuery("DocType").execute(filters={"name": ["not in", 'DocType,DocField']}))
|
||||
|
||||
def test_none_filter(self):
|
||||
query = frappe.db.query.get_sql("DocType", fields="name", filters={"restrict_to_domain": None})
|
||||
sql = str(query).replace('`', '').replace('"', '')
|
||||
condition = 'restrict_to_domain IS NULL'
|
||||
self.assertIn(condition, sql)
|
||||
|
||||
def test_or_filters(self):
|
||||
data = DatabaseQuery("DocField").execute(
|
||||
filters={"parent": "DocType"}, fields=["fieldname", "fieldtype"],
|
||||
|
|
@ -149,7 +155,6 @@ class TestReportview(unittest.TestCase):
|
|||
filters={"creation": ["between", ["2016-07-06", "2016-07-07"]]},
|
||||
fields=["name"])
|
||||
|
||||
|
||||
def test_ignore_permissions_for_get_filters_cond(self):
|
||||
frappe.set_user('test2@example.com')
|
||||
self.assertRaises(frappe.PermissionError, get_filters_cond, 'DocType', dict(istable=1), [])
|
||||
|
|
@ -351,7 +356,6 @@ class TestReportview(unittest.TestCase):
|
|||
self.assertTrue(len(data) == 0)
|
||||
self.assertTrue(len(frappe.get_all('Nested DocType', {'name': ('not ancestors of', 'Root')})) == len(frappe.get_all('Nested DocType')))
|
||||
|
||||
|
||||
def test_is_set_is_not_set(self):
|
||||
res = DatabaseQuery('DocType').execute(filters={'autoname': ['is', 'not set']})
|
||||
self.assertTrue({'name': 'Integration Request'} in res)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue