fix: Consider parenttype when renaming (#19901)

This commit is contained in:
Ankush Menat 2023-02-02 17:05:44 +05:30 committed by GitHub
parent 9598beb0c9
commit 07529ff1c3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 1 deletions

View file

@ -397,7 +397,11 @@ def rename_doctype(doctype: str, old: str, new: str) -> None:
def update_child_docs(old: str, new: str, meta: "Meta") -> None:
# update "parent"
for df in meta.get_table_fields():
frappe.qb.update(df.options).set("parent", new).where(Field("parent") == old).run()
(
frappe.qb.update(df.options)
.set("parent", new)
.where((Field("parent") == old) & (Field("parenttype") == meta.name))
).run()
def update_link_field_values(link_fields: list[dict], old: str, new: str, doctype: str) -> None:

View file

@ -8,6 +8,7 @@ from random import choice, sample
from unittest.mock import patch
import frappe
from frappe.core.doctype.doctype.test_doctype import new_doctype
from frappe.exceptions import DoesNotExistError, ValidationError
from frappe.model.base_document import get_controller
from frappe.model.rename_doc import (
@ -271,3 +272,29 @@ class TestRenameDoc(FrappeTestCase):
self.assertEqual(doc.name, new_name)
self.available_documents.append(new_name)
self.available_documents.remove(name)
def test_parenttype(self):
child = new_doctype(istable=1).insert()
table_field = {
"label": "Test Table",
"fieldname": "test_table",
"fieldtype": "Table",
"options": child.name,
}
parent_a = new_doctype(fields=[table_field], allow_rename=1, autoname="Prompt").insert()
parent_b = new_doctype(fields=[table_field], allow_rename=1, autoname="Prompt").insert()
parent_a_instance = frappe.get_doc(
doctype=parent_a.name, test_table=[{"some_fieldname": "x"}], name="XYZ"
).insert()
parent_b_instance = frappe.get_doc(
doctype=parent_b.name, test_table=[{"some_fieldname": "x"}], name="XYZ"
).insert()
parent_b_instance.rename("ABC")
parent_a_instance.reload()
self.assertEqual(len(parent_a_instance.test_table), 1)
self.assertEqual(len(parent_b_instance.test_table), 1)