@@ -328,7 +328,7 @@ def get_doctype(doctype, processed=False): | |||||
import webnotes.model.doctype | import webnotes.model.doctype | ||||
return webnotes.model.doctype.get(doctype, processed) | 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 | import webnotes.model.utils | ||||
if not ignore_doctypes: | 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): | if isinstance(name, list): | ||||
for n in name: | 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: | 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): | def clear_perms(doctype): | ||||
conn.sql("""delete from tabDocPerm where parent=%s""", doctype) | conn.sql("""delete from tabDocPerm where parent=%s""", doctype) | ||||
@@ -141,7 +141,7 @@ def getvaluelist(doclist, fieldname): | |||||
l.append(d.fields[fieldname]) | l.append(d.fields[fieldname]) | ||||
return l | 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 | 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 | return | ||||
if not for_reload: | 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) | run_on_trash(doctype, name, doclist) | ||||
# check if links exist | # check if links exist | ||||
if not force: | if not force: | ||||
@@ -184,9 +185,9 @@ def delete_doc(doctype=None, name=None, doclist = None, force=0, ignore_doctypes | |||||
return 'okay' | return 'okay' | ||||
def check_permission_and_not_submitted(doctype, name): | |||||
def check_permission_and_not_submitted(doctype, name, ignore_permissions=False): | |||||
# permission | # 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) | webnotes.msgprint(_("User not allowed to delete."), raise_exception=True) | ||||
# check if submitted | # check if submitted | ||||