* [hotfix] throw DoesNotExistError if doctype is not available on Delete api * [fixes] aded tests cases and codecy, travis fixesversion-14
@@ -642,7 +642,7 @@ def get_meta_module(doctype): | |||||
return frappe.modules.load_doctype_module(doctype) | return frappe.modules.load_doctype_module(doctype) | ||||
def delete_doc(doctype=None, name=None, force=0, ignore_doctypes=None, for_reload=False, | def delete_doc(doctype=None, name=None, force=0, ignore_doctypes=None, for_reload=False, | ||||
ignore_permissions=False, flags=None): | |||||
ignore_permissions=False, flags=None, ignore_on_trash=False, ignore_missing=True): | |||||
"""Delete a document. Calls `frappe.model.delete_doc.delete_doc`. | """Delete a document. Calls `frappe.model.delete_doc.delete_doc`. | ||||
:param doctype: DocType of document to be delete. | :param doctype: DocType of document to be delete. | ||||
@@ -653,7 +653,7 @@ def delete_doc(doctype=None, name=None, force=0, ignore_doctypes=None, for_reloa | |||||
:param ignore_permissions: Ignore user permissions.""" | :param ignore_permissions: Ignore user permissions.""" | ||||
import frappe.model.delete_doc | import frappe.model.delete_doc | ||||
frappe.model.delete_doc.delete_doc(doctype, name, force, ignore_doctypes, for_reload, | frappe.model.delete_doc.delete_doc(doctype, name, force, ignore_doctypes, for_reload, | ||||
ignore_permissions, flags) | |||||
ignore_permissions, flags, ignore_on_trash, ignore_missing) | |||||
def delete_doc_if_exists(doctype, name, force=0): | def delete_doc_if_exists(doctype, name, force=0): | ||||
"""Delete document if exists.""" | """Delete document if exists.""" | ||||
@@ -95,7 +95,7 @@ def handle(): | |||||
if frappe.local.request.method=="DELETE": | if frappe.local.request.method=="DELETE": | ||||
# Not checking permissions here because it's checked in delete_doc | # Not checking permissions here because it's checked in delete_doc | ||||
frappe.delete_doc(doctype, name) | |||||
frappe.delete_doc(doctype, name, ignore_missing=False) | |||||
frappe.local.response.http_status_code = 202 | frappe.local.response.http_status_code = 202 | ||||
frappe.local.response.message = "ok" | frappe.local.response.message = "ok" | ||||
frappe.db.commit() | frappe.db.commit() | ||||
@@ -208,7 +208,7 @@ def delete(doctype, name): | |||||
:param doctype: DocType of the document to be deleted | :param doctype: DocType of the document to be deleted | ||||
:param name: name of the document to be deleted''' | :param name: name of the document to be deleted''' | ||||
frappe.delete_doc(doctype, name) | |||||
frappe.delete_doc(doctype, name, ignore_missing=False) | |||||
@frappe.whitelist() | @frappe.whitelist() | ||||
def set_default(key, value, parent=None): | def set_default(key, value, parent=None): | ||||
@@ -15,7 +15,7 @@ from frappe.utils.global_search import delete_for_document | |||||
from six import string_types | from six import string_types | ||||
def delete_doc(doctype=None, name=None, force=0, ignore_doctypes=None, for_reload=False, | def delete_doc(doctype=None, name=None, force=0, ignore_doctypes=None, for_reload=False, | ||||
ignore_permissions=False, flags=None, ignore_on_trash=False): | |||||
ignore_permissions=False, flags=None, ignore_on_trash=False, ignore_missing=True): | |||||
""" | """ | ||||
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 | ||||
""" | """ | ||||
@@ -34,7 +34,10 @@ def delete_doc(doctype=None, name=None, force=0, ignore_doctypes=None, for_reloa | |||||
# already deleted..? | # already deleted..? | ||||
if not frappe.db.exists(doctype, name): | if not frappe.db.exists(doctype, name): | ||||
return | |||||
if not ignore_missing: | |||||
raise frappe.DoesNotExistError | |||||
else: | |||||
return False | |||||
# delete passwords | # delete passwords | ||||
delete_all_passwords_for(doctype, name) | delete_all_passwords_for(doctype, name) | ||||
@@ -13,3 +13,11 @@ class TestClient(unittest.TestCase): | |||||
frappe.set_value('ToDo', todo.name, {'description': 'test 2'}) | frappe.set_value('ToDo', todo.name, {'description': 'test 2'}) | ||||
self.assertEquals(frappe.get_value('ToDo', todo.name, 'description'), 'test 2') | self.assertEquals(frappe.get_value('ToDo', todo.name, 'description'), 'test 2') | ||||
def test_delete(self): | |||||
from frappe.client import delete | |||||
todo = frappe.get_doc(dict(doctype='ToDo', description='description')).insert() | |||||
delete("ToDo", todo.name) | |||||
self.assertFalse(frappe.db.exists("ToDo", todo.name)) | |||||
self.assertRaises(frappe.DoesNotExistError, delete, "ToDo", todo.name) |