From 74b335ce29d09c6bb6ee79e2c08362e8791ddcf2 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Fri, 27 Feb 2015 14:32:01 +0530 Subject: [PATCH] lock old row before rename --- frappe/model/rename_doc.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frappe/model/rename_doc.py b/frappe/model/rename_doc.py index a4a8b73c09..d4e11252dd 100644 --- a/frappe/model/rename_doc.py +++ b/frappe/model/rename_doc.py @@ -82,7 +82,9 @@ def rename_parent_and_child(doctype, old, new, meta): update_child_docs(old, new, meta) def validate_rename(doctype, new, meta, merge, force, ignore_permissions): - exists = frappe.db.get_value(doctype, new) + # using for update so that it gets locked and someone else cannot edit it while this rename is going on! + exists = frappe.db.sql("select name from `tab{doctype}` where name=%s for update".format(doctype=doctype), new) + exists = exists[0][0] if exists else None if merge and not exists: frappe.msgprint(_("{0} {1} does not exist, select a new target to merge").format(doctype, new), raise_exception=1)