fix: rename autoincrement sequence on doctype rename (#37578)
* fix: rename sequence on doctype rename * fix: only rename sequence for autoincrement doctypes
This commit is contained in:
parent
d7f7618039
commit
05854a5803
1 changed files with 16 additions and 2 deletions
|
|
@ -5,10 +5,10 @@ from typing import TYPE_CHECKING
|
|||
|
||||
import frappe
|
||||
import frappe.permissions
|
||||
from frappe import _, bold
|
||||
from frappe import _, bold, scrub
|
||||
from frappe.model.document import Document
|
||||
from frappe.model.dynamic_links import get_dynamic_link_map
|
||||
from frappe.model.naming import validate_name
|
||||
from frappe.model.naming import is_autoincremented, validate_name
|
||||
from frappe.model.utils.user_settings import sync_user_settings, update_user_settings_data
|
||||
from frappe.query_builder import Field
|
||||
from frappe.utils.data import cint, cstr, sbool
|
||||
|
|
@ -412,6 +412,11 @@ def rename_doctype(doctype: str, old: str, new: str) -> None:
|
|||
# change parenttype for fieldtype Table
|
||||
update_parenttype_values(old, new)
|
||||
|
||||
# if autoincrement is enabled, update sequence name
|
||||
meta = frappe.get_meta(new)
|
||||
if is_autoincremented(new, meta):
|
||||
update_sequence_name(old, new)
|
||||
|
||||
|
||||
def update_child_docs(old: str, new: str, meta: "Meta") -> None:
|
||||
# update "parent"
|
||||
|
|
@ -656,6 +661,15 @@ def update_parenttype_values(old: str, new: str):
|
|||
frappe.qb.update(table).set(table.parenttype, new).where(table.parenttype == old).run()
|
||||
|
||||
|
||||
def update_sequence_name(old: str, new: str, slug: str = "_id_seq"):
|
||||
old_sequence_name = scrub(old + slug)
|
||||
new_sequence_name = scrub(new + slug)
|
||||
if frappe.db.db_type == "mariadb":
|
||||
frappe.db.sql_ddl(f"RENAME TABLE `{old_sequence_name}` TO `{new_sequence_name}`")
|
||||
else:
|
||||
frappe.db.sql_ddl(f'ALTER SEQUENCE "{old_sequence_name}" RENAME TO "{new_sequence_name}"')
|
||||
|
||||
|
||||
def rename_dynamic_links(doctype: str, old: str, new: str):
|
||||
Singles = frappe.qb.DocType("Singles")
|
||||
for df in get_dynamic_link_map().get(doctype, []):
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue