[fix] touch locks/installing.lock during new-site, fixes in db_query and get_app_path

This commit is contained in:
Anand Doshi 2016-07-06 18:06:50 +05:30
parent 443e4d2ec7
commit 234e21feee
4 changed files with 35 additions and 24 deletions

View file

@ -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')

View file

@ -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

View file

@ -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:

View file

@ -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