Allow non-admin users to delete custom doctypes
This commit is contained in:
parent
0ae22a5895
commit
8d915701ad
2 changed files with 18 additions and 11 deletions
|
|
@ -1153,7 +1153,7 @@
|
|||
"issingle": 0,
|
||||
"istable": 0,
|
||||
"max_attachments": 0,
|
||||
"modified": "2016-07-08 04:38:09.088871",
|
||||
"modified": "2016-07-11 14:24:21.223885",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Core",
|
||||
"name": "DocType",
|
||||
|
|
@ -1164,7 +1164,7 @@
|
|||
"apply_user_permissions": 0,
|
||||
"cancel": 0,
|
||||
"create": 1,
|
||||
"delete": 0,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"export": 0,
|
||||
"if_owner": 0,
|
||||
|
|
@ -1200,7 +1200,7 @@
|
|||
"write": 1
|
||||
}
|
||||
],
|
||||
"quick_entry": 1,
|
||||
"quick_entry": 0,
|
||||
"read_only": 0,
|
||||
"read_only_onload": 0,
|
||||
"search_fields": "module",
|
||||
|
|
|
|||
|
|
@ -52,6 +52,11 @@ def delete_doc(doctype=None, name=None, force=0, ignore_doctypes=None, for_reloa
|
|||
doc.run_method("before_reload")
|
||||
|
||||
else:
|
||||
doc = frappe.get_doc(doctype, name)
|
||||
|
||||
update_flags(doc, flags, ignore_permissions)
|
||||
check_permission_and_not_submitted(doc)
|
||||
|
||||
frappe.db.sql("delete from `tabCustom Field` where dt = %s", name)
|
||||
frappe.db.sql("delete from `tabCustom Script` where dt = %s", name)
|
||||
frappe.db.sql("delete from `tabProperty Setter` where doc_type = %s", name)
|
||||
|
|
@ -63,13 +68,7 @@ def delete_doc(doctype=None, name=None, force=0, ignore_doctypes=None, for_reloa
|
|||
doc = frappe.get_doc(doctype, name)
|
||||
|
||||
if not for_reload:
|
||||
if ignore_permissions:
|
||||
if not flags: flags = {}
|
||||
flags["ignore_permissions"] = ignore_permissions
|
||||
|
||||
if flags:
|
||||
doc.flags.update(flags)
|
||||
|
||||
update_flags(doc, flags, ignore_permissions)
|
||||
check_permission_and_not_submitted(doc)
|
||||
|
||||
if not ignore_on_trash:
|
||||
|
|
@ -140,10 +139,18 @@ def delete_from_table(doctype, name, ignore_doctypes, doc):
|
|||
for t in list(set(tables)):
|
||||
if t not in ignore_doctypes:
|
||||
frappe.db.sql("delete from `tab%s` where parenttype=%s and parent = %s" % (t, '%s', '%s'), (doctype, name))
|
||||
|
||||
def update_flags(doc, flags=None, ignore_permissions=False):
|
||||
if ignore_permissions:
|
||||
if not flags: flags = {}
|
||||
flags["ignore_permissions"] = ignore_permissions
|
||||
|
||||
if flags:
|
||||
doc.flags.update(flags)
|
||||
|
||||
def check_permission_and_not_submitted(doc):
|
||||
# permission
|
||||
if not doc.flags.ignore_permissions and frappe.session.user!="Administrator" and not doc.has_permission("delete"):
|
||||
if not doc.flags.ignore_permissions and frappe.session.user!="Administrator" and (not doc.has_permission("delete") or (doc.doctype=="DocType" and not doc.custom)):
|
||||
frappe.msgprint(_("User not allowed to delete {0}: {1}").format(doc.doctype, doc.name), raise_exception=True)
|
||||
|
||||
# check if submitted
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue