diff --git a/frappe/core/doctype/module_def/module_def.py b/frappe/core/doctype/module_def/module_def.py index e44fa559df..7fee8f2b12 100644 --- a/frappe/core/doctype/module_def/module_def.py +++ b/frappe/core/doctype/module_def/module_def.py @@ -26,6 +26,12 @@ class ModuleDef(Document): restrict_to_domain: DF.Link | None # end: auto-generated types + def validate(self): + from frappe.modules.utils import get_module_app + + if not self.app_name: + self.app_name = get_module_app(self.name) + def on_update(self): """If in `developer_mode`, create folder for module and add in `modules.txt` of app if missing.""" diff --git a/frappe/desk/doctype/workspace/workspace.py b/frappe/desk/doctype/workspace/workspace.py index 05a31af5c1..da36b5fd32 100644 --- a/frappe/desk/doctype/workspace/workspace.py +++ b/frappe/desk/doctype/workspace/workspace.py @@ -85,6 +85,11 @@ class Workspace(Document): if d.link_type == "Report" and d.is_query_report != 1: d.report_ref_doctype = frappe.get_value("Report", d.link_to, "ref_doctype") + if not self.app and self.module: + from frappe.modules.utils import get_module_app + + self.app = get_module_app(self.module) + def clear_cache(self): super().clear_cache() if self.for_user: diff --git a/frappe/patches.txt b/frappe/patches.txt index 3f7c0bcdbc..bcce73ede8 100644 --- a/frappe/patches.txt +++ b/frappe/patches.txt @@ -240,3 +240,4 @@ frappe.patches.v16_0.switch_default_sort_order frappe.integrations.doctype.oauth_client.patches.set_default_allowed_role_in_oauth_client execute:frappe.db.set_single_value("Workspace Settings", "workspace_setup_completed", 1) frappe.patches.v16_0.add_app_launcher_in_navbar_settings +frappe.desk.doctype.workspace.patches.update_app