feat: add patch to rebuild links
This commit is contained in:
parent
30804666f4
commit
d83ee38d2c
2 changed files with 52 additions and 0 deletions
|
|
@ -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
|
||||
51
frappe/patches/v13_0/cleanup_desk_cards.py
Normal file
51
frappe/patches/v13_0/cleanup_desk_cards.py
Normal 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")
|
||||
Loading…
Add table
Reference in a new issue