def add_permission(doctype, role, permlevel=0, ptype=None): """Add a new permission rule to the given doctype for the given Role and Permission Level""" from frappe.core.doctype.doctype.doctype import validate_permissions_for_doctype setup_custom_perms(doctype) if frappe.db.get_value( "Custom DocPerm", dict(parent=doctype, role=role, permlevel=permlevel, if_owner=0)): return if not ptype: ptype = "read" custom_docperm = frappe.get_doc({ "doctype": "Custom DocPerm", "__islocal": 1, "parent": doctype, "parenttype": "DocType", "parentfield": "permissions", "role": role, "permlevel": permlevel, ptype: 1, }) custom_docperm.save() validate_permissions_for_doctype(doctype) return custom_docperm.name
def add_permission(doctype, role, permlevel=0): '''Add a new permission rule to the given doctype for the given Role and Permission Level''' from frappe.core.doctype.doctype.doctype import validate_permissions_for_doctype setup_custom_perms(doctype) if frappe.db.get_value( 'Custom DocPerm', dict(parent=doctype, role=role, permlevel=permlevel, if_owner=0)): return custom_docperm = frappe.get_doc({ "doctype": "Custom DocPerm", "__islocal": 1, "parent": doctype, "parenttype": "DocType", "parentfield": "permissions", "role": role, 'read': 1, "permlevel": permlevel, }) custom_docperm.save() validate_permissions_for_doctype(doctype)
def remove(doctype, role, permlevel): frappe.only_for("System Manager") setup_custom_perms(doctype) name = frappe.get_value('Custom DocPerm', dict(parent=doctype, role=role, permlevel=permlevel)) frappe.db.sql('delete from `tabCustom DocPerm` where name=%s', name) if not frappe.get_all('Custom DocPerm', dict(parent=doctype)): frappe.throw(_('There must be atleast one permission rule.'), title=_('Cannot Remove')) validate_permissions_for_doctype(doctype, for_remove=True)
def update_permission_property(doctype, role, permlevel, ptype, value=None, validate=True): '''Update a property in Custom Perm''' from frappe.core.doctype.doctype.doctype import validate_permissions_for_doctype out = setup_custom_perms(doctype) name = frappe.get_value('Custom DocPerm', dict(parent=doctype, role=role, permlevel=permlevel)) frappe.db.sql(""" update `tabCustom DocPerm` set `{0}`=%s where name=%s""".format(ptype), (value, name)) if validate: validate_permissions_for_doctype(doctype) return out
def remove(doctype, role, permlevel): frappe.only_for("System Manager") setup_custom_perms(doctype) frappe.db.delete("Custom DocPerm", { "parent": doctype, "role": role, "permlevel": permlevel }) if not frappe.get_all('Custom DocPerm', {"parent": doctype}): frappe.throw(_('There must be atleast one permission rule.'), title=_('Cannot Remove')) validate_permissions_for_doctype(doctype, for_remove=True, alert=True)
def update(doctype, role, permlevel, ptype, value=None): frappe.only_for("System Manager") out = None if setup_custom_perms(doctype): out = 'refresh' name = frappe.get_value( 'Custom DocPerm', dict(parent=doctype, role=role, permlevel=permlevel)) frappe.db.sql("""update `tabCustom DocPerm` set `%s`=%s where name=%s"""\ % (frappe.db.escape(ptype), '%s', '%s'), (value, name)) validate_permissions_for_doctype(doctype) return out
def update_permission_property(doctype, role, permlevel, ptype, value=None, validate=True): """Update a property in Custom Perm""" from frappe.core.doctype.doctype.doctype import validate_permissions_for_doctype out = setup_custom_perms(doctype) name = frappe.get_value( "Custom DocPerm", dict(parent=doctype, role=role, permlevel=permlevel)) table = DocType("Custom DocPerm") frappe.qb.update(table).set(ptype, value).where(table.name == name).run() if validate: validate_permissions_for_doctype(doctype) return out
def add_permission(doctype, role, permlevel=0): '''Add a new permission rule to the given doctype for the given Role and Permission Level''' from frappe.core.doctype.doctype.doctype import validate_permissions_for_doctype setup_custom_perms(doctype) if frappe.db.get_value('Custom DocPerm', dict(parent=doctype, role=role, permlevel=permlevel)): return custom_docperm = frappe.get_doc({ "doctype":"Custom DocPerm", "__islocal": 1, "parent": doctype, "parenttype": "DocType", "parentfield": "permissions", "role": role, 'read': 1, "permlevel": permlevel, }) custom_docperm.save() validate_permissions_for_doctype(doctype)
def validate_and_reset(doctype, for_remove=False): from frappe.core.doctype.doctype.doctype import validate_permissions_for_doctype validate_permissions_for_doctype(doctype, for_remove) clear_doctype_cache(doctype)