diff --git a/frappe/model/db_query.py b/frappe/model/db_query.py index eeee7f4bf7..f6cb19d86e 100644 --- a/frappe/model/db_query.py +++ b/frappe/model/db_query.py @@ -291,7 +291,7 @@ class DatabaseQuery(object): # prepare in condition if f.operator.lower() in ('in', 'not in'): - values = f.value + values = f.value or '' if not isinstance(values, (list, tuple)): values = values.split(",") diff --git a/frappe/tests/test_db_query.py b/frappe/tests/test_db_query.py index 5451ce263b..edaab8e02a 100644 --- a/frappe/tests/test_db_query.py +++ b/frappe/tests/test_db_query.py @@ -31,6 +31,19 @@ class TestReportview(unittest.TestCase): self.assertTrue({"name":"DocField"} \ in DatabaseQuery("DocType").execute(filters={"name": "DocField"})) + def test_in_not_in_filters(self): + self.assertFalse(DatabaseQuery("DocType").execute(filters={"name": ["in", None]})) + self.assertTrue({"name":"DocType"} \ + in DatabaseQuery("DocType").execute(filters={"name": ["not in", None]})) + + for result in [{"name":"DocType"}, {"name":"DocField"}]: + self.assertTrue(result + in DatabaseQuery("DocType").execute(filters={"name": ["in", 'DocType,DocField']})) + + for result in [{"name":"DocType"}, {"name":"DocField"}]: + self.assertFalse(result + in DatabaseQuery("DocType").execute(filters={"name": ["not in", 'DocType,DocField']})) + def test_or_filters(self): data = DatabaseQuery("DocField").execute( filters={"parent": "DocType"}, fields=["fieldname", "fieldtype"],