Parcourir la source

[hotfix] throw DoesNotExistError if doctype is not available on Delete api (#4013)

* [hotfix] throw DoesNotExistError if doctype is not available on Delete api

* [fixes] aded tests cases and codecy, travis fixes
version-14
Makarand Bauskar il y a 7 ans
committed by GitHub
Parent
révision
6fa9967a04
5 fichiers modifiés avec 17 ajouts et 6 suppressions
  1. +2
    -2
      frappe/__init__.py
  2. +1
    -1
      frappe/api.py
  3. +1
    -1
      frappe/client.py
  4. +5
    -2
      frappe/model/delete_doc.py
  5. +8
    -0
      frappe/tests/test_client.py

+ 2
- 2
frappe/__init__.py Voir le fichier

@@ -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."""


+ 1
- 1
frappe/api.py Voir le fichier

@@ -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()


+ 1
- 1
frappe/client.py Voir le fichier

@@ -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):


+ 5
- 2
frappe/model/delete_doc.py Voir le fichier

@@ -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)


+ 8
- 0
frappe/tests/test_client.py Voir le fichier

@@ -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)

Chargement…
Annuler
Enregistrer