diff --git a/frappe/app.py b/frappe/app.py index 98efc122a1..b426920575 100644 --- a/frappe/app.py +++ b/frappe/app.py @@ -21,6 +21,7 @@ from frappe.utils import get_site_name local_manager = LocalManager([frappe.local]) _site = None +_sites_path = '.' def handle_session_stopped(): res = Response(""" @@ -41,7 +42,7 @@ def application(request): try: site = _site or get_site_name(request.host) - frappe.init(site=site) + frappe.init(site=site, sites_path=_sites_path) if not frappe.local.conf: # site does not exist @@ -79,9 +80,10 @@ def application(request): application = local_manager.make_middleware(application) -def serve(port=8000, profile=False, site=None): - global application, _site +def serve(port=8000, profile=False, site=None, sites_path='.'): + global application, _site, _sites_path _site = site + _sites_path = sites_path from werkzeug.serving import run_simple @@ -90,12 +92,12 @@ def serve(port=8000, profile=False, site=None): if not os.environ.get('NO_STATICS'): application = SharedDataMiddleware(application, { - '/assets': 'assets', + '/assets': os.path.join(sites_path, 'assets'), }) if site: application = SharedDataMiddleware(application, { - '/files': os.path.join(site, 'public', 'files') + '/files': os.path.join(sites_path, site, 'public', 'files') }) run_simple('0.0.0.0', int(port), application, use_reloader=True, diff --git a/frappe/cli.py b/frappe/cli.py index 81da43acc7..b0bfa09c00 100755 --- a/frappe/cli.py +++ b/frappe/cli.py @@ -13,8 +13,8 @@ site_arg_optional = [] def main(): parsed_args = frappe._dict(vars(setup_parser())) fn = get_function(parsed_args) - if not parsed_args.get("sites_path"): - parsed_args["sites_path"] = "." + parsed_args["sites_path"] = os.environ.get("SITES_DIR", ".") + sites_path = parsed_args["sites_path"] if not parsed_args.get("make_app"): @@ -22,13 +22,13 @@ def main(): for site in get_sites(parsed_args["sites_path"]): args = parsed_args.copy() args["site"] = site - frappe.init(site) + frappe.init(site, sites_path=sites_path) run(fn, args) else: if not fn in site_arg_optional: - if not parsed_args.get("site") and os.path.exists("currentsite.txt"): - with open("currentsite.txt", "r") as sitefile: - parsed_args["site"] = sitefile.read() + if not parsed_args.get("site") and os.path.exists(os.path.join(sites_path, "currentsite.txt")): + with open(os.path.join(sites_path, "currentsite.txt"), "r") as sitefile: + parsed_args["site"] = sitefile.read().strip() site = parsed_args.get("site") @@ -36,11 +36,11 @@ def main(): print "Site argument required" exit(1) - if fn != 'install' and not os.path.exists(site): + if fn != 'install' and not os.path.exists(os.path.join(parsed_args["sites_path"], site)): print "Did not find folder '{}'. Are you in sites folder?".format(parsed_args.get("site")) exit(1) - frappe.init(site) + frappe.init(site, sites_path=parsed_args["sites_path"]) run(fn, parsed_args) else: run(fn, parsed_args) @@ -625,9 +625,9 @@ def run_tests(app=None, module=None, doctype=None, verbose=False): exit(1) @cmd -def serve(port=8000, profile=False): +def serve(port=8000, profile=False, sites_path='.'): import frappe.app - frappe.app.serve(port=port, profile=profile, site=frappe.local.site) + frappe.app.serve(port=port, profile=profile, site=frappe.local.site, sites_path=sites_path) @cmd def request(args):