diff --git a/frappe/core/doctype/role/role.py b/frappe/core/doctype/role/role.py index 7092004eaf..2119f3caa1 100644 --- a/frappe/core/doctype/role/role.py +++ b/frappe/core/doctype/role/role.py @@ -67,7 +67,10 @@ class Role(Document): def get_info_based_on_role(role, field="email"): """Get information of all users that have been assigned this role""" users = frappe.get_list( - "Has Role", filters={"role": role}, parent_doctype="User", fields=["parent as user_name"] + "Has Role", + filters={"role": role, "parenttype": "User"}, + parent_doctype="User", + fields=["parent as user_name"], ) return get_user_info(users, field) diff --git a/frappe/core/doctype/role/test_role.py b/frappe/core/doctype/role/test_role.py index a94796436d..44b9b1cdee 100644 --- a/frappe/core/doctype/role/test_role.py +++ b/frappe/core/doctype/role/test_role.py @@ -3,6 +3,7 @@ import unittest import frappe +from frappe.core.doctype.role.role import get_info_based_on_role test_records = frappe.get_test_records("Role") @@ -43,3 +44,11 @@ class TestUser(unittest.TestCase): role.save() user.reload() self.assertTrue(user.user_type == "Website User") + + def test_get_users_by_role(self): + + role = "System Manager" + sys_managers = get_info_based_on_role(role, field="name") + + for user in sys_managers: + self.assertIn(role, frappe.get_roles(user))