diff --git a/webnotes/__init__.py b/webnotes/__init__.py index 64afdefd35..5b94ba76a1 100644 --- a/webnotes/__init__.py +++ b/webnotes/__init__.py @@ -328,7 +328,7 @@ def get_doctype(doctype, processed=False): import webnotes.model.doctype return webnotes.model.doctype.get(doctype, processed) -def delete_doc(doctype=None, name=None, doclist = None, force=0, ignore_doctypes=None, for_reload=False): +def delete_doc(doctype=None, name=None, doclist = None, force=0, ignore_doctypes=None, for_reload=False, ignore_permissions=False): import webnotes.model.utils if not ignore_doctypes: @@ -336,9 +336,9 @@ def delete_doc(doctype=None, name=None, doclist = None, force=0, ignore_doctypes if isinstance(name, list): for n in name: - webnotes.model.utils.delete_doc(doctype, n, doclist, force, ignore_doctypes, for_reload) + webnotes.model.utils.delete_doc(doctype, n, doclist, force, ignore_doctypes, for_reload, ignore_permissions) else: - webnotes.model.utils.delete_doc(doctype, name, doclist, force, ignore_doctypes, for_reload) + webnotes.model.utils.delete_doc(doctype, name, doclist, force, ignore_doctypes, for_reload, ignore_permissions) def clear_perms(doctype): conn.sql("""delete from tabDocPerm where parent=%s""", doctype) diff --git a/webnotes/model/utils.py b/webnotes/model/utils.py index e0ad09dfc5..08d895fa02 100644 --- a/webnotes/model/utils.py +++ b/webnotes/model/utils.py @@ -141,7 +141,7 @@ def getvaluelist(doclist, fieldname): l.append(d.fields[fieldname]) return l -def delete_doc(doctype=None, name=None, doclist = None, force=0, ignore_doctypes=[], for_reload=False): +def delete_doc(doctype=None, name=None, doclist = None, force=0, ignore_doctypes=[], for_reload=False, ignore_permissions=False): """ Deletes a doc(dt, dn) and validates if it is not submitted and not linked in a live record """ @@ -160,7 +160,8 @@ def delete_doc(doctype=None, name=None, doclist = None, force=0, ignore_doctypes return if not for_reload: - check_permission_and_not_submitted(doctype, name) + check_permission_and_not_submitted(doctype, name, ignore_permissions) + run_on_trash(doctype, name, doclist) # check if links exist if not force: @@ -184,9 +185,9 @@ def delete_doc(doctype=None, name=None, doclist = None, force=0, ignore_doctypes return 'okay' -def check_permission_and_not_submitted(doctype, name): +def check_permission_and_not_submitted(doctype, name, ignore_permissions=False): # permission - if webnotes.session.user!="Administrator" and not webnotes.has_permission(doctype, "cancel"): + if not ignore_permissions and webnotes.session.user!="Administrator" and not webnotes.has_permission(doctype, "cancel"): webnotes.msgprint(_("User not allowed to delete."), raise_exception=True) # check if submitted