示例#1
0
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
示例#2
0
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
示例#3
0
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