feat!: Added support for IS in frappe qb (#16877)

Fixes #16869
Using 53148c3f90
This commit is contained in:
Aradhya Tripathi 2022-05-18 14:39:22 +05:30 committed by GitHub
parent 3ca56b8a4a
commit 7a0dc40693
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 0 deletions

View file

@ -85,6 +85,11 @@ def func_between(key: Field, value: Union[List, Tuple]) -> frappe.qb:
return key[slice(*value)]
def func_is(key, value):
"Wrapper for IS"
return Field(key).isnotnull() if value.lower() == "set" else Field(key).isnull()
def make_function(key: Any, value: Union[int, str]):
"""returns fucntion query
@ -135,6 +140,7 @@ OPERATOR_MAP = {
"not like": not_like,
"regex": func_regex,
"between": func_between,
"is": func_is,
}

View file

@ -858,3 +858,12 @@ class TestDDLCommandsPost(unittest.TestCase):
)
dt.delete(ignore_permissions=True)
def test_is(self):
user = frappe.qb.DocType("User")
self.assertIn(
"is not null", frappe.db.get_values(user, filters={user.name: ("is", "set")}, run=False).lower()
)
self.assertIn(
"is null", frappe.db.get_values(user, filters={user.name: ("is", "not set")}, run=False).lower()
)