Bläddra i källkod

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

version-14
Anand Doshi 9 år sedan
förälder
incheckning
234e21feee
4 ändrade filer med 35 tillägg och 24 borttagningar
  1. +24
    -15
      frappe/commands/site.py
  2. +6
    -7
      frappe/model/db_query.py
  3. +4
    -1
      frappe/model/document.py
  4. +1
    -1
      frappe/utils/__init__.py

+ 24
- 15
frappe/commands/site.py Visa fil

@@ -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:
_install_app(app, verbose=verbose, set_as_patched=not source_sql)
try:
installing = touch_file(get_site_path('locks', 'installing.lock'))

if install_apps:
for app in install_apps:
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)

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, "***"
frappe.destroy()
scheduler_status = "disabled" if frappe.utils.scheduler.is_scheduler_disabled() else "enabled"
print "*** Scheduler is", scheduler_status, "***"

finally:
os.remove(installing)
frappe.destroy()

@click.command('restore')
@click.argument('sql-file-path')


+ 6
- 7
frappe/model/db_query.py Visa fil

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


+ 4
- 1
frappe/model/document.py Visa fil

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


+ 1
- 1
frappe/utils/__init__.py Visa fil

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


Laddar…
Avbryt
Spara