feat!: Added support for IS in frappe qb (#16877)
Fixes #16869
Using 53148c3f90
This commit is contained in:
parent
3ca56b8a4a
commit
7a0dc40693
2 changed files with 15 additions and 0 deletions
|
|
@ -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,
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue