def install_app(name, verbose=False, set_as_patched=True): frappe.flags.in_install = name frappe.clear_cache() app_hooks = frappe.get_hooks(app_name=name) installed_apps = frappe.get_installed_apps() # install pre-requisites if app_hooks.required_apps: for app in app_hooks.required_apps: install_app(app) frappe.flags.in_install = name frappe.clear_cache() if name not in frappe.get_all_apps(): raise Exception("App not in apps.txt") if name in installed_apps: frappe.msgprint(_("App {0} already installed").format(name)) return print("\nInstalling {0}...".format(name)) if name != "frappe": frappe.only_for("System Manager") for before_install in app_hooks.before_install or []: out = frappe.get_attr(before_install)() if out == False: return if name != "frappe": add_module_defs(name) sync_for(name, force=True, sync_everything=True, verbose=verbose, reset_permissions=True) sync_from_app(name) add_to_installed_apps(name) frappe.get_doc('Portal Settings', 'Portal Settings').sync_menu() if set_as_patched: set_all_patches_as_completed(name) for after_install in app_hooks.after_install or []: frappe.get_attr(after_install)() sync_fixtures(name) sync_customizations(name) for after_sync in app_hooks.after_sync or []: frappe.get_attr(after_sync)() # frappe.flags.in_install = False
def install_app(name, verbose=False, set_as_patched=True): frappe.flags.in_install = name frappe.flags.ignore_in_install = False frappe.clear_cache() app_hooks = frappe.get_hooks(app_name=name) installed_apps = frappe.get_installed_apps() # install pre-requisites if app_hooks.required_apps: for app in app_hooks.required_apps: install_app(app) frappe.flags.in_install = name frappe.clear_cache() if name not in frappe.get_all_apps(): raise Exception("App not in apps.txt") if name in installed_apps: frappe.msgprint(_("App {0} already installed").format(name)) return print("\nInstalling {0}...".format(name)) if name != "frappe": frappe.only_for("System Manager") for before_install in app_hooks.before_install or []: out = frappe.get_attr(before_install)() if out==False: return if name != "frappe": add_module_defs(name) sync_for(name, force=True, sync_everything=True, verbose=verbose, reset_permissions=True) sync_from_app(name) add_to_installed_apps(name) frappe.get_doc('Portal Settings', 'Portal Settings').sync_menu() if set_as_patched: set_all_patches_as_completed(name) for after_install in app_hooks.after_install or []: frappe.get_attr(after_install)() sync_fixtures(name) sync_customizations(name) for after_sync in app_hooks.after_sync or []: frappe.get_attr(after_sync)() # frappe.flags.in_install = False
def execute(): frappe.reload_doc('desk', 'doctype', 'desktop_icon') frappe.db.sql('delete from `tabDesktop Icon`') modules_list = [] for app in frappe.get_installed_apps(): modules_list += sync_from_app(app) # sync hidden modules hidden_modules = frappe.db.get_global('hidden_modules') if hidden_modules: for m in json.loads(hidden_modules): try: desktop_icon = frappe.get_doc('Desktop Icon', {'module_name': m, 'standard': 1, 'app': app}) desktop_icon.db_set('hidden', 1) except frappe.DoesNotExistError: pass # sync user sort for user in frappe.get_all('User', filters={'user_type': 'System User'}): user_list = frappe.defaults.get_user_default('_user_desktop_items', user=user.name) if user_list: user_list = json.loads(user_list) for i, module_name in enumerate(user_list): try: desktop_icon = get_user_copy(module_name, user=user.name) desktop_icon.db_set('idx', i) except frappe.DoesNotExistError: pass # set remaining icons as hidden for module_name in list(set([m['module_name'] for m in modules_list]) - set(user_list)): try: desktop_icon = get_user_copy(module_name, user=user.name) desktop_icon.db_set('hidden', 1) except frappe.DoesNotExistError: pass