mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-13 02:01:21 +00:00
Merge pull request #49617 from frappe/mergify/bp/version-15-hotfix/pr-49467
fix: add condition for name (backport #49467)
This commit is contained in:
@@ -2475,6 +2475,10 @@ def build_qb_match_conditions(doctype, user=None) -> list:
|
|||||||
for filter in match_filters:
|
for filter in match_filters:
|
||||||
for link_option, allowed_values in filter.items():
|
for link_option, allowed_values in filter.items():
|
||||||
fieldnames = link_fields_map.get(link_option, [])
|
fieldnames = link_fields_map.get(link_option, [])
|
||||||
|
cond = None
|
||||||
|
|
||||||
|
if link_option == doctype:
|
||||||
|
cond = _dt["name"].isin(allowed_values)
|
||||||
|
|
||||||
for fieldname in fieldnames:
|
for fieldname in fieldnames:
|
||||||
field = _dt[fieldname]
|
field = _dt[fieldname]
|
||||||
@@ -2483,6 +2487,7 @@ def build_qb_match_conditions(doctype, user=None) -> list:
|
|||||||
if not apply_strict_user_permissions:
|
if not apply_strict_user_permissions:
|
||||||
cond = (Coalesce(field, "") == "") | cond
|
cond = (Coalesce(field, "") == "") | cond
|
||||||
|
|
||||||
|
if cond:
|
||||||
criterion.append(cond)
|
criterion.append(cond)
|
||||||
|
|
||||||
return criterion
|
return criterion
|
||||||
|
|||||||
@@ -5,8 +5,10 @@ import unittest
|
|||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
import frappe.utils
|
import frappe.utils
|
||||||
|
from frappe.query_builder import Criterion
|
||||||
|
|
||||||
import erpnext
|
import erpnext
|
||||||
|
from erpnext.accounts.utils import build_qb_match_conditions
|
||||||
from erpnext.setup.doctype.employee.employee import InactiveEmployeeStatusError
|
from erpnext.setup.doctype.employee.employee import InactiveEmployeeStatusError
|
||||||
|
|
||||||
test_records = frappe.get_test_records("Employee")
|
test_records = frappe.get_test_records("Employee")
|
||||||
@@ -34,6 +36,32 @@ class TestEmployee(unittest.TestCase):
|
|||||||
employee_doc.save()
|
employee_doc.save()
|
||||||
self.assertTrue("Employee" not in frappe.get_roles(user))
|
self.assertTrue("Employee" not in frappe.get_roles(user))
|
||||||
|
|
||||||
|
def test_employee_user_permission(self):
|
||||||
|
employee1 = make_employee("employee_1_test@company.com", create_user_permission=1)
|
||||||
|
employee2 = make_employee("employee_2_test@company.com", create_user_permission=1)
|
||||||
|
make_employee("employee_3_test@company.com", create_user_permission=1)
|
||||||
|
|
||||||
|
employee1_doc = frappe.get_doc("Employee", employee1)
|
||||||
|
employee2_doc = frappe.get_doc("Employee", employee2)
|
||||||
|
|
||||||
|
employee2_doc.reload()
|
||||||
|
employee2_doc.reports_to = employee1_doc.name
|
||||||
|
employee2_doc.save()
|
||||||
|
|
||||||
|
frappe.set_user(employee1_doc.user_id)
|
||||||
|
|
||||||
|
Employee = frappe.qb.DocType("Employee")
|
||||||
|
qb_employee_list = (
|
||||||
|
frappe.qb.from_(Employee)
|
||||||
|
.select(Employee.name)
|
||||||
|
.where(Criterion.all(build_qb_match_conditions("Employee")))
|
||||||
|
.orderby(Employee.Name)
|
||||||
|
).run(pluck=Employee.name)
|
||||||
|
employee_list = frappe.db.get_list("Employee", pluck="name", order_by="name")
|
||||||
|
|
||||||
|
self.assertEqual(qb_employee_list, employee_list)
|
||||||
|
frappe.set_user("Administrator")
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
frappe.db.rollback()
|
frappe.db.rollback()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user