fix: remove orphan workspace sidebars

This commit is contained in:
sokumon 2026-01-12 10:35:50 +05:30
parent 0390c8d933
commit 5c81a34cbb

View file

@ -201,13 +201,16 @@ def remove_orphan_doctypes():
def remove_orphan_entities(): def remove_orphan_entities():
entites = ["Workspace", "Dashboard", "Page", "Report"] entites = ["Workspace", "Dashboard", "Page", "Report"]
app_level_entities = ["Workspace Sidebar"]
entity_filter_map = { entity_filter_map = {
"Workspace": {"public": 1}, "Workspace": {"public": 1},
"Page": {"standard": "Yes"}, "Page": {"standard": "Yes"},
"Report": {"is_standard": "Yes"}, "Report": {"is_standard": "Yes"},
"Dashboard": {"is_standard": True}, "Dashboard": {"is_standard": True},
"Workspace Sidebar": {"standard": True},
} }
entity_file_map = create_entity_file_map(entites) entity_file_map = create_entity_file_map(entites)
for entity in entites: for entity in entites:
print(f"Removing orphan {entity}s") print(f"Removing orphan {entity}s")
all_enitities = frappe.get_all( all_enitities = frappe.get_all(
@ -228,6 +231,26 @@ def remove_orphan_entities():
print(e) print(e)
# save the deleted icons # save the deleted icons
frappe.db.commit() # nosemgrep frappe.db.commit() # nosemgrep
# Remove app level entities
for app_entity in app_level_entities:
print(f"Removing orphan {app_entity}s")
all_enitities = frappe.get_all(
app_entity, filters=entity_filter_map.get(app_entity), fields=["name", "app"]
)
for i, w in enumerate(all_enitities):
if w.app and not check_if_record_exists("app", frappe.get_app_path(w.app), app_entity, w.name):
try:
print(f"Deleting entity {app_entity} {w.name}")
frappe.delete_doc(app_entity, w.name, force=True, ignore_missing=True)
update_progress_bar(f"Deleting orphaned {app_entity}", i, len(all_enitities))
print()
except Exception as e:
print(f"Error occurred while deleting entity: {app_entity} {w.name}")
print(e)
# save the deleted icons
frappe.db.commit() # nosemgrep
def create_entity_file_map(entities): def create_entity_file_map(entities):