diff --git a/frappe/__init__.py b/frappe/__init__.py index c01c040299..0e58c9a313 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -13,7 +13,7 @@ import os, sys, importlib, inspect, json from .exceptions import * from .utils.jinja import get_jenv, get_template, render_template -__version__ = "7.0.27" +__version__ = "7.1-beta" __title__ = "Frappe Framework" local = Local() diff --git a/frappe/commands/utils.py b/frappe/commands/utils.py index 2324e3de36..d09732854f 100644 --- a/frappe/commands/utils.py +++ b/frappe/commands/utils.py @@ -383,20 +383,47 @@ def get_version(): if hasattr(module, "__version__"): print "{0} {1}".format(m, module.__version__) -@click.command('setup-help') + + +@click.command('setup-global-help') @click.option('--mariadb_root_password') -def setup_help(mariadb_root_password=None): - "Make a database for help documentation" +def setup_global_help(mariadb_root_password=None): + '''setup help table in a separate database that will be + shared by the whole bench and set `global_help_setup` as 1 in + common_site_config.json''' + + from frappe.installer import update_site_config + frappe.local.flags = frappe._dict() frappe.local.flags.in_setup_help = True frappe.local.flags.in_install = True frappe.local.lang = 'en' frappe.local.conf = frappe.get_site_config(sites_path='.') + + update_site_config('global_help_setup', 1, + site_config_path=os.path.join('.', 'common_site_config.json')) + if mariadb_root_password: frappe.local.conf.root_password = mariadb_root_password + from frappe.utils.help import sync sync() +@click.command('setup-help') +@pass_context +def setup_help(context): + '''Setup help table in the current site (called after migrate)''' + from frappe.utils.help import sync + + for site in context.sites: + try: + frappe.init(site) + frappe.connect() + sync() + finally: + frappe.destroy() + + commands = [ build, clear_cache, @@ -421,5 +448,6 @@ commands = [ watch, _bulk_rename, add_to_email_queue, + setup_global_help, setup_help ] diff --git a/frappe/installer.py b/frappe/installer.py index 23064ee2f2..22dcc6b303 100755 --- a/frappe/installer.py +++ b/frappe/installer.py @@ -265,9 +265,12 @@ def make_site_config(db_name=None, db_password=None, site_config=None): with open(site_file, "w") as f: f.write(json.dumps(site_config, indent=1, sort_keys=True)) -def update_site_config(key, value, validate=True): +def update_site_config(key, value, validate=True, site_config_path=None): """Update a value in site_config""" - with open(get_site_config_path(), "r") as f: + if not site_config_path: + site_config_path = get_site_config_path() + + with open(site_config_path, "r") as f: site_config = json.loads(f.read()) # In case of non-int value @@ -288,7 +291,7 @@ def update_site_config(key, value, validate=True): else: site_config[key] = value - with open(get_site_config_path(), "w") as f: + with open(site_config_path, "w") as f: f.write(json.dumps(site_config, indent=1, sort_keys=True)) if frappe.local.conf: diff --git a/frappe/migrate.py b/frappe/migrate.py index 145d30edbd..b60e2213a8 100644 --- a/frappe/migrate.py +++ b/frappe/migrate.py @@ -13,6 +13,7 @@ from frappe.desk.notifications import clear_notifications from frappe.website import render from frappe.desk.doctype.desktop_icon.desktop_icon import sync_desktop_icons from frappe.core.doctype.language.language import sync_languages +import frappe.utils.help def migrate(verbose=True, rebuild_website=False): '''Migrate all apps to the latest version, will: @@ -40,6 +41,10 @@ def migrate(verbose=True, rebuild_website=False): frappe.db.commit() + if not frappe.conf.get('global_help_setup'): + # sync help if not set as global + frappe.utils.help.sync() + clear_notifications() frappe.publish_realtime("version-update") diff --git a/frappe/utils/help.py b/frappe/utils/help.py index f87379cdf8..159027b1bf 100644 --- a/frappe/utils/help.py +++ b/frappe/utils/help.py @@ -33,10 +33,16 @@ def get_help_content(path): class HelpDatabase(object): def __init__(self): - bench_name = os.path.basename(os.path.abspath(frappe.get_app_path('frappe')).split('/apps/')[0]) - self.help_db_name = hashlib.sha224(bench_name).hexdigest()[:15] + self.global_help_setup = frappe.conf.get('global_help_setup') + if self.global_help_setup: + bench_name = os.path.basename(os.path.abspath(frappe.get_app_path('frappe')).split('/apps/')[0]) + self.help_db_name = hashlib.sha224(bench_name).hexdigest()[:15] def make_database(self): + '''make database for global help setup''' + if not self.global_help_setup: + return + dbman = DbManager(get_root_connection()) dbman.drop_database(self.help_db_name) @@ -52,7 +58,10 @@ class HelpDatabase(object): dbman.flush_privileges() def connect(self): - self.db = Database(user=self.help_db_name, password=self.help_db_name) + if self.global_help_setup: + self.db = Database(user=self.help_db_name, password=self.help_db_name) + else: + self.db = frappe.db def make_table(self): if not 'help' in self.db.get_tables():