feat: add patch to rebuild links

This commit is contained in:
Shivam Mishra 2020-12-01 14:00:04 +05:30
parent 30804666f4
commit d83ee38d2c
2 changed files with 52 additions and 0 deletions

View file

@ -317,3 +317,4 @@ frappe.patches.v13_0.remove_custom_link
execute:frappe.delete_doc("DocType", "Footer Item")
frappe.patches.v13_0.replace_field_target_with_open_in_new_tab
frappe.core.doctype.role.patches.v13_set_default_desk_properties
frappe.patches.v13_0.cleanup_desk_cards #sd

View file

@ -0,0 +1,51 @@
import frappe
from six import string_types
from json import loads
from frappe.desk.doctype.desk_page.desk_page import get_link_type, get_report_type
def execute():
if not frappe.db.exists("Doctype", "Desk Card"):
return
frappe.reload_doc('desk', 'doctype', 'desk_page')
pages = frappe.get_all("Desk Page", filters={"is_standard": 0}, pluck="name")
for page in pages:
rebuild_links(page)
frappe.delete_doc("DocType", "Desk Card")
def rebuild_links(page):
# Empty links table
doc = frappe.get_doc("Desk Page", page)
doc.links = []
for card in get_all_cards(page):
if isinstance(card.links, string_types):
links = loads(card.links)
else:
links = card.links
doc.append('links', {
"label": card.label,
"type": "Card Break",
"icon": card.icon,
"hidden": card.hidden or False
})
for link in links:
doc.append('links', {
"label": link.get('label') or link.get('name'),
"type": "Link",
"link_type": get_link_type(link.get('type')),
"link_to": link.get('name'),
"onboard": link.get('onboard'),
"dependencies": ', '.join(link.get('dependencies', [])),
"is_query_report": get_report_type(link.get('name')) if link.get('type').lower() == "report" else 0
})
doc.save(ignore_permissions=True)
def get_all_cards(page):
return frappe.db.get_all("Desk Card", filters={"parent": page}, fields=['*'], order_by="idx")