From b889bb5b5a41a7c8a49293eb3058159d68743d98 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Fri, 3 Feb 2023 13:06:09 +0530 Subject: [PATCH] fix: list view setting patch failures - make idempotent - ignore ordering (fails as it tries to query order which might not exist --- ...list_view_setting_to_list_view_settings.py | 39 +++++++++++-------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/frappe/patches/v13_0/rename_list_view_setting_to_list_view_settings.py b/frappe/patches/v13_0/rename_list_view_setting_to_list_view_settings.py index 2147a2da94..c7c8cbc724 100644 --- a/frappe/patches/v13_0/rename_list_view_setting_to_list_view_settings.py +++ b/frappe/patches/v13_0/rename_list_view_setting_to_list_view_settings.py @@ -5,22 +5,27 @@ import frappe def execute(): - if frappe.db.table_exists("List View Setting"): - if not frappe.db.table_exists("List View Settings"): - frappe.reload_doc("desk", "doctype", "List View Settings") + if not frappe.db.table_exists("List View Setting"): + return + if not frappe.db.exists("DocType", "List View Setting"): + return - existing_list_view_settings = frappe.get_all("List View Settings", as_list=True) - for list_view_setting in frappe.get_all( - "List View Setting", - fields=["disable_count", "disable_sidebar_stats", "disable_auto_refresh", "name"], - ): - name = list_view_setting.pop("name") - if name not in [x[0] for x in existing_list_view_settings]: - list_view_setting["doctype"] = "List View Settings" - list_view_settings = frappe.get_doc(list_view_setting) - # setting name here is necessary because autoname is set as prompt - list_view_settings.name = name - list_view_settings.insert() + frappe.reload_doc("desk", "doctype", "List View Settings") - frappe.delete_doc("DocType", "List View Setting", force=True) - frappe.db.commit() + existing_list_view_settings = frappe.get_all( + "List View Settings", as_list=True, order_by="modified" + ) + for list_view_setting in frappe.get_all( + "List View Setting", + fields=["disable_count", "disable_sidebar_stats", "disable_auto_refresh", "name"], + order_by="modified", + ): + name = list_view_setting.pop("name") + if name not in [x[0] for x in existing_list_view_settings]: + list_view_setting["doctype"] = "List View Settings" + list_view_settings = frappe.get_doc(list_view_setting) + # setting name here is necessary because autoname is set as prompt + list_view_settings.name = name + list_view_settings.insert() + + frappe.delete_doc("DocType", "List View Setting", force=True)