fix: resolve desk originals defensively (Frappe version compat)
get_workspace_sidebar_items doesn't exist in every Frappe version (e.g. v14); the
hard 'from frappe.desk.desktop import ...' raised ImportError and broke the whole
desk_overrides module, taking the get_desktop_page override down with it
('Failed to get method ... cannot import name get_workspace_sidebar_items').
Resolve both originals via getattr(None) and guard the wrappers.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
d7af667d6e
commit
acb1010324
|
|
@ -7,6 +7,11 @@ browser, so there is no flash of soon-to-be-hidden items.
|
|||
|
||||
Importing the originals by module path bypasses the override map and always
|
||||
yields Frappe's real implementation.
|
||||
|
||||
NOTE: resolve the originals defensively with getattr — `get_workspace_sidebar_items`
|
||||
does not exist in every Frappe version (e.g. v14). A hard `from ... import` would
|
||||
raise ImportError and break the WHOLE module, taking the get_desktop_page override
|
||||
down with it.
|
||||
"""
|
||||
|
||||
import json
|
||||
|
|
@ -14,13 +19,13 @@ import json
|
|||
import frappe
|
||||
from frappe import _
|
||||
|
||||
from frappe.desk.desktop import (
|
||||
get_desktop_page as _orig_get_desktop_page,
|
||||
get_workspace_sidebar_items as _orig_get_workspace_sidebar_items,
|
||||
)
|
||||
from frappe.desk import desktop as _desktop
|
||||
|
||||
from jey_theme import desk_layout
|
||||
|
||||
_orig_get_desktop_page = getattr(_desktop, "get_desktop_page", None)
|
||||
_orig_get_workspace_sidebar_items = getattr(_desktop, "get_workspace_sidebar_items", None)
|
||||
|
||||
|
||||
def _log(message):
|
||||
try:
|
||||
|
|
@ -31,6 +36,8 @@ def _log(message):
|
|||
|
||||
@frappe.whitelist()
|
||||
def get_workspace_sidebar_items():
|
||||
if _orig_get_workspace_sidebar_items is None:
|
||||
return {"pages": []} # method absent on this Frappe version; dead path
|
||||
result = _orig_get_workspace_sidebar_items()
|
||||
# Filtering must never break the desk: on any error, return the original.
|
||||
try:
|
||||
|
|
@ -157,6 +164,8 @@ def _filter_hide_block(ws_name, items) -> list:
|
|||
|
||||
@frappe.whitelist()
|
||||
def get_desktop_page(page):
|
||||
if _orig_get_desktop_page is None:
|
||||
return {} # method absent on this Frappe version; dead path
|
||||
result = _orig_get_desktop_page(page)
|
||||
# Transforms must never break the desk: on any error, return the original.
|
||||
try:
|
||||
|
|
|
|||
Loading…
Reference in New Issue