From cd4fff5daf10cdaf2da458c13b660802d00a845c Mon Sep 17 00:00:00 2001 From: nikhilponnuru Date: Fri, 7 May 2021 00:44:02 +0530 Subject: [PATCH] fix: Workspace not found error that happens when a workspace which was deleted when still in use and hence won't let the user to use the desk page --- frappe/desk/desktop.py | 22 +++++++++++-------- .../js/frappe/views/workspace/workspace.js | 6 +++-- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/frappe/desk/desktop.py b/frappe/desk/desktop.py index d1b5e27a2f..1a3b1ca99b 100644 --- a/frappe/desk/desktop.py +++ b/frappe/desk/desktop.py @@ -359,15 +359,18 @@ def get_desktop_page(page): Returns: dict: dictionary of cards, charts and shortcuts to be displayed on website """ - wspace = Workspace(page) - wspace.build_workspace() - return { - 'charts': wspace.charts, - 'shortcuts': wspace.shortcuts, - 'cards': wspace.cards, - 'onboarding': wspace.onboarding, - 'allow_customization': not wspace.doc.disable_user_customization - } + try: + wspace = Workspace(page) + wspace.build_workspace() + return { + 'charts': wspace.charts, + 'shortcuts': wspace.shortcuts, + 'cards': wspace.cards, + 'onboarding': wspace.onboarding, + 'allow_customization': not wspace.doc.disable_user_customization + } + except DoesNotExistError: + return {} @frappe.whitelist() def get_desk_sidebar_items(): @@ -608,3 +611,4 @@ def merge_cards_based_on_label(cards): cards_dict[label] = card return list(cards_dict.values()) + diff --git a/frappe/public/js/frappe/views/workspace/workspace.js b/frappe/public/js/frappe/views/workspace/workspace.js index 0deba75c7f..80f8c00705 100644 --- a/frappe/public/js/frappe/views/workspace/workspace.js +++ b/frappe/public/js/frappe/views/workspace/workspace.js @@ -246,7 +246,7 @@ class DesktopPage { this.page.appendTo(this.container); this.get_data().then(() => { - if (!this.data) { + if (Object.keys(this.data).length == 0) { delete localStorage.current_workspace; frappe.set_route("workspace"); return; @@ -274,7 +274,7 @@ class DesktopPage { page: this.page_name }).then(data => { this.data = data; - if (!this.data) return; + if (Object.keys(this.data).length == 0) return; return frappe.dashboard_utils.get_dashboard_settings().then(settings => { let chart_config = settings.chart_config ? JSON.parse(settings.chart_config) : {}; @@ -410,3 +410,5 @@ class DesktopPage { this.sections["cards"] = cards; } } + +