refactor: move logic to a seperate patch
This commit is contained in:
parent
16d3c2c85c
commit
d9d231feb8
4 changed files with 73 additions and 74 deletions
|
|
@ -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})
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
61
frappe/patches/v16_0/auto_generate_sidebar_from_modules.py
Normal file
61
frappe/patches/v16_0/auto_generate_sidebar_from_modules.py
Normal 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
|
||||
Loading…
Add table
Reference in a new issue