Update doctype names in skip_for_doctype field on doctype rename (#5719)

This commit is contained in:
Suraj Shetty 2018-06-26 10:13:37 +05:30 committed by Rushabh Mehta
parent a7de780715
commit 8ef543fdcc

View file

@ -174,6 +174,7 @@ def rename_doctype(doctype, old, new, force=False):
# change options for fieldtype Table
update_options_for_fieldtype("Table", old, new)
update_options_for_fieldtype("Link", old, new)
update_user_permissions(old, new)
# change options where select options are hardcoded i.e. listed
select_fields = get_select_fields(old, new)
@ -283,6 +284,15 @@ def update_options_for_fieldtype(fieldtype, old, new):
frappe.db.sql("""update `tabProperty Setter` set value=%s
where property='options' and value=%s""", (new, old))
def update_user_permissions(old_doctype_name, new_doctype_name):
user_perms = frappe.get_all('User Permission', fields=['name','skip_for_doctype'])
for perm in user_perms:
doctype_list = perm.skip_for_doctype.split("\n") if perm.skip_for_doctype else []
if old_doctype_name in doctype_list:
new_list = [new_doctype_name if dt==old_doctype_name else dt for dt in doctype_list]
new_string = "\n".join(new_list)
frappe.db.set_value('User Permission', perm.name, 'skip_for_doctype', new_string)
def get_select_fields(old, new):
"""
get select type fields where doctype's name is hardcoded as