[fix] touch locks/installing.lock during new-site, fixes in db_query and get_app_path
This commit is contained in:
parent
443e4d2ec7
commit
234e21feee
4 changed files with 35 additions and 24 deletions
|
|
@ -6,6 +6,7 @@ from frappe.commands import pass_context, get_site
|
|||
from frappe.commands.scheduler import _is_scheduler_enabled
|
||||
from frappe.limits import update_limits, get_limits
|
||||
from frappe.installer import update_site_config
|
||||
from frappe.utils import touch_file, get_site_path
|
||||
|
||||
@click.command('new-site')
|
||||
@click.argument('site')
|
||||
|
|
@ -23,12 +24,17 @@ def new_site(site, mariadb_root_username=None, mariadb_root_password=None, admin
|
|||
db_name = hashlib.sha1(site).hexdigest()[:10]
|
||||
|
||||
frappe.init(site=site, new_site=True)
|
||||
_new_site(db_name, site, mariadb_root_username=mariadb_root_username, mariadb_root_password=mariadb_root_password, admin_password=admin_password, verbose=verbose, install_apps=install_app, source_sql=source_sql, force=force)
|
||||
|
||||
_new_site(db_name, site, mariadb_root_username=mariadb_root_username, mariadb_root_password=mariadb_root_password, admin_password=admin_password,
|
||||
verbose=verbose, install_apps=install_app, source_sql=source_sql, force=force)
|
||||
|
||||
if len(frappe.utils.get_sites()) == 1:
|
||||
use(site)
|
||||
|
||||
def _new_site(db_name, site, mariadb_root_username=None, mariadb_root_password=None, admin_password=None, verbose=False, install_apps=None, source_sql=None,force=False, reinstall=False):
|
||||
"Install a new Frappe site"
|
||||
def _new_site(db_name, site, mariadb_root_username=None, mariadb_root_password=None, admin_password=None,
|
||||
verbose=False, install_apps=None, source_sql=None,force=False, reinstall=False):
|
||||
"""Install a new Frappe site"""
|
||||
|
||||
from frappe.installer import install_db, make_site_dirs
|
||||
from frappe.installer import install_app as _install_app
|
||||
import frappe.utils.scheduler
|
||||
|
|
@ -41,24 +47,27 @@ def _new_site(db_name, site, mariadb_root_username=None, mariadb_root_password=N
|
|||
except:
|
||||
enable_scheduler = False
|
||||
|
||||
install_db(root_login=mariadb_root_username, root_password=mariadb_root_password, db_name=db_name, admin_password=admin_password, verbose=verbose, source_sql=source_sql,force=force, reinstall=reinstall)
|
||||
make_site_dirs()
|
||||
_install_app("frappe", verbose=verbose, set_as_patched=not source_sql)
|
||||
|
||||
if frappe.conf.get("install_apps"):
|
||||
for app in frappe.conf.install_apps:
|
||||
try:
|
||||
installing = touch_file(get_site_path('locks', 'installing.lock'))
|
||||
|
||||
install_db(root_login=mariadb_root_username, root_password=mariadb_root_password, db_name=db_name,
|
||||
admin_password=admin_password, verbose=verbose, source_sql=source_sql,force=force, reinstall=reinstall)
|
||||
|
||||
apps_to_install = ['frappe'] + (frappe.conf.get("install_apps") or []) + (install_apps or [])
|
||||
for app in apps_to_install:
|
||||
_install_app(app, verbose=verbose, set_as_patched=not source_sql)
|
||||
|
||||
if install_apps:
|
||||
for app in install_apps:
|
||||
_install_app(app, verbose=verbose, set_as_patched=not source_sql)
|
||||
frappe.utils.scheduler.toggle_scheduler(enable_scheduler)
|
||||
frappe.db.commit()
|
||||
|
||||
frappe.utils.scheduler.toggle_scheduler(enable_scheduler)
|
||||
frappe.db.commit()
|
||||
scheduler_status = "disabled" if frappe.utils.scheduler.is_scheduler_disabled() else "enabled"
|
||||
print "*** Scheduler is", scheduler_status, "***"
|
||||
|
||||
scheduler_status = "disabled" if frappe.utils.scheduler.is_scheduler_disabled() else "enabled"
|
||||
print "*** Scheduler is", scheduler_status, "***"
|
||||
frappe.destroy()
|
||||
finally:
|
||||
os.remove(installing)
|
||||
frappe.destroy()
|
||||
|
||||
@click.command('restore')
|
||||
@click.argument('sql-file-path')
|
||||
|
|
|
|||
|
|
@ -36,16 +36,15 @@ class DatabaseQuery(object):
|
|||
|
||||
# fitlers and fields swappable
|
||||
# its hard to remember what comes first
|
||||
if isinstance(fields, dict):
|
||||
# if fields is given as dict, its probably filters
|
||||
self.filters = fields
|
||||
fields = None
|
||||
if (isinstance(fields, dict)
|
||||
or (isinstance(fields, list) and fields and isinstance(fields[0], list))):
|
||||
# if fields is given as dict/list of list, its probably filters
|
||||
filters, fields = fields, filters
|
||||
|
||||
if self.fields and isinstance(filters, list) \
|
||||
elif fields and isinstance(filters, list) \
|
||||
and len(filters) > 1 and isinstance(filters[0], basestring):
|
||||
# if `filters` is a list of strings, its probably fields
|
||||
self.fields = filters
|
||||
filters = None
|
||||
filters, fields = fields, filters
|
||||
|
||||
if fields:
|
||||
self.fields = fields
|
||||
|
|
|
|||
|
|
@ -553,7 +553,10 @@ class Document(BaseDocument):
|
|||
if frappe.flags.print_messages:
|
||||
print self.as_json().encode("utf-8")
|
||||
|
||||
raise frappe.MandatoryError(", ".join((each[0] for each in missing)))
|
||||
raise frappe.MandatoryError('[{doctype}, {name}]: {fields}'.format(
|
||||
fields=", ".join((each[0] for each in missing)),
|
||||
doctype=self.doctype,
|
||||
name=self.name))
|
||||
|
||||
def _validate_links(self):
|
||||
if self.flags.ignore_links:
|
||||
|
|
|
|||
|
|
@ -318,7 +318,7 @@ def get_disk_usage():
|
|||
def touch_file(path):
|
||||
with open(path, 'a'):
|
||||
os.utime(path, None)
|
||||
return True
|
||||
return path
|
||||
|
||||
def get_test_client():
|
||||
from frappe.app import application
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue