feat: Ignore permlevel for specific fields

This commit is contained in:
Nabin Hait 2022-04-12 12:24:23 +05:30
parent 022bbe9889
commit b4476e0257
2 changed files with 16 additions and 1 deletions

View file

@ -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")

View file

@ -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: