diff --git a/frappe/core/doctype/domain/domain.py b/frappe/core/doctype/domain/domain.py index 1fe3a967c1..61869f8fe8 100644 --- a/frappe/core/doctype/domain/domain.py +++ b/frappe/core/doctype/domain/domain.py @@ -18,10 +18,11 @@ class Domain(Document): self.setup_roles() self.setup_properties() self.set_values() - if not int(frappe.db.get_single_value('System Settings', 'setup_complete') or 0): + # always set the desktop icons while changing the domain settings + self.setup_desktop_icons() + if not int(frappe.defaults.get_defaults().setup_complete or 0): # if setup not complete, setup desktop etc. self.setup_sidebar_items() - self.setup_desktop_icons() self.set_default_portal_role() if self.data.custom_fields: diff --git a/frappe/core/doctype/domain_settings/domain_settings.py b/frappe/core/doctype/domain_settings/domain_settings.py index ab3cfc38df..2ac9c716a7 100644 --- a/frappe/core/doctype/domain_settings/domain_settings.py +++ b/frappe/core/doctype/domain_settings/domain_settings.py @@ -15,7 +15,10 @@ class DomainSettings(Document): self.save() def on_update(self): - for d in self.active_domains: + for i, d in enumerate(self.active_domains): + # set the flag to update the the desktop icons of all domains + if i >= 1: + frappe.flags.keep_desktop_icons = True domain = frappe.get_doc('Domain', d.domain) domain.setup_domain() diff --git a/frappe/desk/doctype/desktop_icon/desktop_icon.py b/frappe/desk/doctype/desktop_icon/desktop_icon.py index 91de421e8f..6d5e2d6ab5 100644 --- a/frappe/desk/doctype/desktop_icon/desktop_icon.py +++ b/frappe/desk/doctype/desktop_icon/desktop_icon.py @@ -196,11 +196,13 @@ def set_desktop_icons(visible_list, ignore_duplicate=True): if the desktop icon does not exist and the name is a DocType, then will create an icon for the doctype''' - # clear all custom - frappe.db.sql('delete from `tabDesktop Icon` where standard=0') + # clear all custom only if setup is not complete + if not int(frappe.defaults.get_defaults().setup_complete or 0): + frappe.db.sql('delete from `tabDesktop Icon` where standard=0') - # set all as blocked - frappe.db.sql('update `tabDesktop Icon` set blocked=0, hidden=1') + # set standard as blocked and hidden if setting first active domain + if not frappe.flags.keep_desktop_icons: + frappe.db.sql('update `tabDesktop Icon` set blocked=0, hidden=1 where standard=1') # set as visible if present, or add icon for module_name in visible_list: