feat: add function to rebuild desk links
This commit is contained in:
parent
48c676f8dd
commit
3b4c6cc84a
1 changed files with 58 additions and 2 deletions
|
|
@ -4,11 +4,14 @@
|
|||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe import _
|
||||
from frappe import _, _dict
|
||||
from frappe.utils.data import validate_json_string
|
||||
from frappe.modules.export_file import export_to_files
|
||||
from frappe.model.document import Document
|
||||
|
||||
from json import loads, dumps
|
||||
from six import string_types
|
||||
|
||||
class DeskPage(Document):
|
||||
def validate(self):
|
||||
self.validate_cards_json()
|
||||
|
|
@ -45,4 +48,57 @@ def disable_saving_as_standard():
|
|||
frappe.flags.in_patch or \
|
||||
frappe.flags.in_test or \
|
||||
frappe.flags.in_fixtures or \
|
||||
frappe.flags.in_migrate
|
||||
frappe.flags.in_migrate
|
||||
|
||||
def rebuild_all(pages=None):
|
||||
if not pages:
|
||||
pages = frappe.get_all("Desk Page", pluck="name")
|
||||
|
||||
failed = []
|
||||
for page in pages:
|
||||
try:
|
||||
rebuild_links(page)
|
||||
except Exception as e:
|
||||
failed.append(page)
|
||||
print(e)
|
||||
print(failed)
|
||||
|
||||
def rebuild_links(page):
|
||||
link_type_map = {
|
||||
"doctype": "DocType",
|
||||
"page": "Page",
|
||||
"report": "Report",
|
||||
None: "DocType"
|
||||
}
|
||||
doc = frappe.get_doc("Desk Page", page)
|
||||
print(f"Rebuilding Links for {page} Page")
|
||||
doc.links = []
|
||||
for section in doc.cards:
|
||||
print(f"-- Processing {section.label} section")
|
||||
if isinstance(section.links, string_types):
|
||||
links = loads(section.links)
|
||||
else:
|
||||
links = section.links
|
||||
|
||||
doc.append('links', {
|
||||
"label": section.label,
|
||||
"type": "Card Break",
|
||||
"icon": section.icon,
|
||||
"hidden": section.hidden or False
|
||||
})
|
||||
|
||||
for link in links:
|
||||
doc.append('links', {
|
||||
"label": link.get('label') or link.get('name'),
|
||||
"type": "Card Break",
|
||||
"link_type": link_type_map[link.get('type').lower()],
|
||||
"link_to": link.get('name'),
|
||||
"onboard": link.get('onboard'),
|
||||
"is_query_report": get_report_type(link.get('name')) if link.get('type').lower() == "report" else 0
|
||||
})
|
||||
|
||||
doc.save(ignore_permissions=True)
|
||||
|
||||
def get_report_type(report):
|
||||
report_type = frappe.get_value("Report", report, "report_type")
|
||||
return report_type in ["Query Report", "Script Report", "Custom Report"]
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue