[command] bench setup-help will make the help db

This commit is contained in:
Rushabh Mehta 2016-08-23 17:53:38 +05:30
parent d07e6759a1
commit 8a32adcaf8
5 changed files with 45 additions and 21 deletions

View file

@ -383,6 +383,16 @@ def get_version():
if hasattr(module, "__version__"):
print "{0} {1}".format(m, module.__version__)
@click.command('setup-help')
def setup_help():
"Make a database for help documentation"
frappe.local.flags = frappe._dict()
frappe.local.flags.in_setup_help = True
frappe.local.lang = 'en'
frappe.local.conf = frappe.get_site_config(sites_path='.')
from frappe.utils.help import sync
sync()
commands = [
build,
clear_cache,
@ -407,4 +417,5 @@ commands = [
watch,
_bulk_rename,
add_to_email_queue,
setup_help
]

View file

@ -487,13 +487,10 @@ class DbManager:
if not host:
host = self.get_current_host()
try:
if password:
self.db.sql("CREATE USER '%s'@'%s' IDENTIFIED BY '%s';" % (user[:16], host, password))
else:
self.db.sql("CREATE USER '%s'@'%s';" % (user[:16], host))
except Exception:
raise
if password:
self.db.sql("CREATE USER '%s'@'%s' IDENTIFIED BY '%s';" % (user[:16], host, password))
else:
self.db.sql("CREATE USER '%s'@'%s';" % (user[:16], host))
def delete_user(self, target, host=None):
if not host:
@ -519,7 +516,8 @@ class DbManager:
if not host:
host = self.get_current_host()
self.db.sql("GRANT ALL PRIVILEGES ON `%s`.* TO '%s'@'%s';" % (target, user, host))
self.db.sql("GRANT ALL PRIVILEGES ON `%s`.* TO '%s'@'%s';" % (target,
user, host))
def grant_select_privilges(self, db, table, user, host=None):
if not host:

View file

@ -168,11 +168,11 @@ def get_full_dict(lang):
:param lang: Language Code, e.g. `hi`
"""
if not lang:
if not lang or lang=='en':
return {}
# found in local, return!
if frappe.local.lang_full_dict is not None:
if getattr(frappe.local, 'lang_full_dict', None) is not None:
return frappe.local.lang_full_dict
frappe.local.lang_full_dict = load_lang(lang)
@ -193,6 +193,9 @@ def load_lang(lang, apps=None):
For derivative languages (es-GT), take translations from the
base language (es) and then update translations from the child (es-GT)"""
if lang=='en':
return {}
out = frappe.cache().hget("lang_full_dict", lang)
if not out:
out = {}

View file

@ -4,6 +4,7 @@
from __future__ import unicode_literals
import frappe
import hashlib
from frappe.model.db_schema import DbManager
from frappe.installer import get_root_connection
@ -32,10 +33,12 @@ def get_help_content(path):
class HelpDatabase(object):
def __init__(self):
self.help_db_name = '_frappe_help'
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):
dbman = DbManager(get_root_connection())
dbman.drop_database(self.help_db_name)
# make database
if not self.help_db_name in dbman.get_database_list():
@ -61,7 +64,7 @@ class HelpDatabase(object):
full_path text,
fulltext(title),
fulltext(content),
fulltext(path))
index (path))
COLLATE=utf8mb4_unicode_ci
ENGINE=MyISAM
CHARACTER SET=utf8mb4''')
@ -95,8 +98,9 @@ class HelpDatabase(object):
app_name = frappe.get_attr('{app}.__title__'.format(app=app)) or app
doc_contents += '<li><a data-path="/{app}/index">{app_name}</a></li>'.format(
app=app, app_name=app_name)
except Exception, e:
except Exception:
pass
for basepath, folders, files in os.walk(docs_folder):
files = self.reorder_files(files)
for fname in files:

View file

@ -5,7 +5,7 @@ from __future__ import unicode_literals
def get_jenv():
import frappe
if not frappe.local.jenv:
if not getattr(frappe.local, 'jenv', None):
from jinja2 import Environment, DebugUndefined
# frappe will be loaded last, so app templates will get precedence
@ -73,7 +73,7 @@ def get_allowed_functions_for_jenv():
if "_" in frappe.local.form_dict:
del frappe.local.form_dict["_"]
return {
out = {
# make available limited methods of frappe
"frappe": {
"_": frappe._,
@ -93,7 +93,6 @@ def get_allowed_functions_for_jenv():
"get_all": frappe.get_all,
"utils": datautils,
"user": getattr(frappe.local, "session", None) and frappe.local.session.user or "Guest",
"date_format": frappe.db.get_default("date_format") or "yyyy-mm-dd",
"get_fullname": frappe.utils.get_fullname,
"get_gravatar": frappe.utils.get_gravatar_url,
"full_name": getattr(frappe.local, "session", None) and frappe.local.session.data.full_name or "Guest",
@ -104,8 +103,6 @@ def get_allowed_functions_for_jenv():
"automodule": automodule,
"get_controller": get_controller
},
"get_visible_columns": \
frappe.get_attr("frappe.www.print.get_visible_columns"),
"_": frappe._,
"get_shade": get_shade,
"scrub": scrub,
@ -113,13 +110,22 @@ def get_allowed_functions_for_jenv():
"dev_server": 1 if os.environ.get('DEV_SERVER', False) else 0
}
if not frappe.flags.in_setup_help:
out['date_format'] = frappe.db.get_default("date_format") or "yyyy-mm-dd"
out['get_visible_columns'] = frappe.get_attr("frappe.www.print.get_visible_columns")
return out
def get_jloader():
import frappe
if not frappe.local.jloader:
if not getattr(frappe.local, 'jloader', None):
from jinja2 import ChoiceLoader, PackageLoader, PrefixLoader
apps = frappe.local.flags.web_pages_apps or frappe.get_installed_apps(sort=True)
apps.reverse()
if frappe.local.flags.in_setup_help:
apps = ['frappe']
else:
apps = frappe.local.flags.web_pages_apps or frappe.get_installed_apps(sort=True)
apps.reverse()
if not "frappe" in apps:
apps.append('frappe')
@ -151,6 +157,8 @@ def set_filters(jenv):
jenv.filters["flt"] = flt
jenv.filters["abs_url"] = abs_url
if frappe.flags.in_setup_help: return
# load jenv_filters from hooks.py
for app in frappe.get_installed_apps():
for jenv_filter in (frappe.get_hooks(app_name=app).jenv_filter or []):