瀏覽代碼

feat: Ignore permlevel for specific fields

version-14
Nabin Hait 3 年之前
父節點
當前提交
b4476e0257
共有 2 個文件被更改,包括 16 次插入1 次删除
  1. +11
    -0
      frappe/core/doctype/user/test_user.py
  2. +5
    -1
      frappe/model/base_document.py

+ 11
- 0
frappe/core/doctype/user/test_user.py 查看文件

@@ -130,6 +130,17 @@ class TestUser(unittest.TestCase):
# system manager is not added (it is reset)
self.assertFalse("System Manager" in [d.role for d in me.roles])

# ignore permlevel using flags
me.flags.ignore_permlevel_for_fields = ["roles"]
me.add_roles("System Manager")

# system manager now added due to flags
self.assertTrue("System Manager" in [d.role for d in me.get("roles")])

# reset flags
me.flags.ignore_permlevel_for_fields = None

# change user
frappe.set_user("Administrator")

me = frappe.get_doc("User", "testperm@example.com")


+ 5
- 1
frappe/model/base_document.py 查看文件

@@ -1096,7 +1096,11 @@ class BaseDocument(object):
to_reset = []

for df in high_permlevel_fields:
if df.permlevel not in has_access_to and df.fieldtype not in display_fieldtypes:
if (
df.permlevel not in has_access_to
and df.fieldtype not in display_fieldtypes
and df.fieldname not in self.flags.get("ignore_permlevel_for_fields", [])
):
to_reset.append(df)

if to_reset:


Loading…
取消
儲存