refactor: move logic to a seperate patch

This commit is contained in:
sokumon 2025-12-08 12:27:59 +05:30
parent 16d3c2c85c
commit d9d231feb8
4 changed files with 73 additions and 74 deletions

View file

@ -527,20 +527,7 @@ def get_sentry_dsn():
return os.getenv("FRAPPE_SENTRY_DSN")
def add_user_specific_sidebar(sidebars):
try:
my_workspace_for_user = frappe.get_doc("Workspace Sidebar", f"My Workspaces-{frappe.session.user}")
sidebars.append(
{"name": my_workspace_for_user.name, "header_icon": my_workspace_for_user.header_icon}
)
except frappe.DoesNotExistError:
my_workspace = frappe.get_doc("Workspace Sidebar", "My Workspaces")
sidebars.append({"name": my_workspace.name, "header_icon": my_workspace.header_icon})
def get_sidebar_items():
from frappe.desk.doctype.workspace_sidebar.workspace_sidebar import create_sidebars_for_modules
sidebars = frappe.get_all(
"Workspace Sidebar", fields=["name", "header_icon"], filters={"name": ["not like", "%My Workspaces%"]}
)
@ -548,7 +535,6 @@ def get_sidebar_items():
sidebar_items = {}
for s in sidebars:
print(s)
w = frappe.get_doc("Workspace Sidebar", s.get("name"))
sidebar_items[s["name"].lower()] = {
"label": s.get("name"),
@ -593,3 +579,14 @@ def get_sidebar_items():
if old_name in sidebar_items.keys():
sidebar_items["my workspaces"] = sidebar_items.pop(old_name)
return sidebar_items
def add_user_specific_sidebar(sidebars):
try:
my_workspace_for_user = frappe.get_doc("Workspace Sidebar", f"My Workspaces-{frappe.session.user}")
sidebars.append(
{"name": my_workspace_for_user.name, "header_icon": my_workspace_for_user.header_icon}
)
except frappe.DoesNotExistError:
my_workspace = frappe.get_doc("Workspace Sidebar", "My Workspaces")
sidebars.append({"name": my_workspace.name, "header_icon": my_workspace.header_icon})

View file

@ -240,63 +240,3 @@ def add_to_my_workspace(workspace):
except Exception as e:
frappe.log_error(title="Error in Adding Private Workspaces", message=e)
def create_sidebars_for_modules():
sidebars = []
for module in frappe.get_all("Module Def", pluck="name"):
if not (
frappe.db.exists("Workspace Sidebar", {"module": module})
or frappe.db.exists("Workspace Sidebar", {"name": module})
):
print("Fetching information for Module", module)
module_info = get_module_info(module)
sidebar_items = create_sidebar_items(module_info)
sidebar = frappe.new_doc("Workspace Sidebar")
sidebar.title = module
sidebar.items = sidebar_items
sidebar.header_icon = "hammer"
sidebars.append(sidebar)
sidebar.save()
return sidebars
def get_module_info(module_name):
entities = ["Workspace", "Dashboard", "DocType", "Report", "Page"]
module_info = {}
for entity in entities:
module_info[entity] = {}
filters = [{"module": module_name}]
if entity.lower() == "doctype":
filters.append({"istable": 0})
module_info[entity] = frappe.get_all(entity, filters=filters, pluck="name")
return module_info
def create_sidebar_items(module_info):
print(module_info)
sidebar_items = []
for entity, items in module_info.items():
if entity.lower() == "report":
section_break = frappe.new_doc("Workspace Sidebar Item")
section_break.update(
{
"type": "Section Break",
}
)
sidebar_items.append(section_break)
for item in items:
item_info = {"label": item, "type": "Link", "link_type": entity, "link_to": item}
if entity.lower() == "workspace":
item_info["icon"] = "home"
if entity.lower() == "doctype" and "settings" in item.lower():
item_info["icon"] = "settings"
sidebar_item = frappe.new_doc("Workspace Sidebar Item")
sidebar_item.update(item_info)
sidebar_items.append(sidebar_item)
return sidebar_items

View file

@ -252,3 +252,4 @@ frappe.patches.v16_0.auto_generate_desktop_icon_and_sidebar
frappe.patches.v16_0.add_private_workspaces_to_sidebar
frappe.core.doctype.communication_link.patches.copy_communication_date_to_link
frappe.core.doctype.communication.patches.drop_ref_dt_dn_index
frappe.patches.v16_0.auto_generate_sidebar_from_modules

View file

@ -0,0 +1,61 @@
import frappe
def execute():
"""Auto generate sidebar from module"""
sidebars = []
for module in frappe.get_all("Module Def", pluck="name"):
if not (
frappe.db.exists("Workspace Sidebar", {"module": module})
or frappe.db.exists("Workspace Sidebar", {"name": module})
):
print("Fetching information for Module", module)
module_info = get_module_info(module)
sidebar_items = create_sidebar_items(module_info)
sidebar = frappe.new_doc("Workspace Sidebar")
sidebar.title = module
sidebar.items = sidebar_items
sidebar.header_icon = "hammer"
sidebars.append(sidebar)
sidebar.save()
return sidebars
def get_module_info(module_name):
entities = ["Workspace", "Dashboard", "DocType", "Report", "Page"]
module_info = {}
for entity in entities:
module_info[entity] = {}
filters = [{"module": module_name}]
if entity.lower() == "doctype":
filters.append({"istable": 0})
module_info[entity] = frappe.get_all(entity, filters=filters, pluck="name")
return module_info
def create_sidebar_items(module_info):
sidebar_items = []
for entity, items in module_info.items():
if entity.lower() == "report":
section_break = frappe.new_doc("Workspace Sidebar Item")
section_break.update(
{
"type": "Section Break",
}
)
sidebar_items.append(section_break)
for item in items:
item_info = {"label": item, "type": "Link", "link_type": entity, "link_to": item}
if entity.lower() == "workspace":
item_info["icon"] = "home"
if entity.lower() == "doctype" and "settings" in item.lower():
item_info["icon"] = "settings"
sidebar_item = frappe.new_doc("Workspace Sidebar Item")
sidebar_item.update(item_info)
sidebar_items.append(sidebar_item)
return sidebar_items