Enable Scheduler via Setup > System Settings
This commit is contained in:
parent
e63ffa80df
commit
964711a3e0
7 changed files with 149 additions and 75 deletions
|
|
@ -140,6 +140,8 @@ def setup_install(parser):
|
|||
help="Install a fresh app in db_name specified in conf.py")
|
||||
parser.add_argument("--restore", metavar=("DB-NAME", "SQL-FILE"), nargs=2,
|
||||
help="Restore from an sql file")
|
||||
parser.add_argument("--with_scheduler_enabled", default=False, action="store_true",
|
||||
help="Enable scheduler on restore")
|
||||
parser.add_argument("--add_system_manager", nargs="+",
|
||||
metavar=("EMAIL", "[FIRST-NAME] [LAST-NAME]"), help="Add a user with all roles")
|
||||
|
||||
|
|
@ -242,6 +244,11 @@ def setup_utilities(parser):
|
|||
parser.add_argument("--run_scheduler_event", nargs=1,
|
||||
metavar="all | daily | weekly | monthly",
|
||||
help="Run a scheduler event")
|
||||
parser.add_argument("--enable_scheduler", default=False, action="store_true",
|
||||
help="Enable scheduler")
|
||||
parser.add_argument("--disable_scheduler", default=False, action="store_true",
|
||||
help="Disable scheduler")
|
||||
|
||||
|
||||
# replace
|
||||
parser.add_argument("--replace", nargs=3,
|
||||
|
|
@ -284,8 +291,13 @@ def use(sites_path):
|
|||
def install(db_name, root_login="root", root_password=None, source_sql=None,
|
||||
admin_password = 'admin', force=False, site_config=None, reinstall=False, quiet=False, install_apps=None):
|
||||
from frappe.installer import install_db, install_app, make_site_dirs
|
||||
import frappe.utils.scheduler
|
||||
|
||||
verbose = not quiet
|
||||
|
||||
# enable scheduler post install?
|
||||
enable_scheduler = _is_scheduler_enabled()
|
||||
|
||||
install_db(root_login=root_login, root_password=root_password, db_name=db_name, source_sql=source_sql,
|
||||
admin_password = admin_password, verbose=verbose, force=force, site_config=site_config, reinstall=reinstall)
|
||||
make_site_dirs()
|
||||
|
|
@ -299,8 +311,23 @@ def install(db_name, root_login="root", root_password=None, source_sql=None,
|
|||
for app in install_apps:
|
||||
install_app(app, verbose=verbose, set_as_patched=not source_sql)
|
||||
|
||||
frappe.utils.scheduler.toggle_scheduler(enable_scheduler)
|
||||
|
||||
scheduler_status = "disabled" if frappe.utils.scheduler.is_scheduler_disabled() else "enabled"
|
||||
print "*** Scheduler is", scheduler_status, "***"
|
||||
|
||||
frappe.destroy()
|
||||
|
||||
def _is_scheduler_enabled():
|
||||
enable_scheduler = False
|
||||
try:
|
||||
frappe.connect()
|
||||
enable_scheduler = frappe.db.get_default("enable_scheduler")
|
||||
finally:
|
||||
frappe.db.close()
|
||||
|
||||
return enable_scheduler
|
||||
|
||||
@cmd
|
||||
def install_app(app_name, quiet=False):
|
||||
verbose = not quiet
|
||||
|
|
@ -334,10 +361,13 @@ def reinstall(quiet=False):
|
|||
install(db_name=frappe.conf.db_name, verbose=verbose, force=True, reinstall=True, install_apps=installed)
|
||||
|
||||
@cmd
|
||||
def restore(db_name, source_sql, force=False, quiet=False):
|
||||
def restore(db_name, source_sql, force=False, quiet=False, with_scheduler_enabled=False):
|
||||
import frappe.utils.scheduler
|
||||
verbose = not quiet
|
||||
install(db_name, source_sql=source_sql, verbose=verbose, force=force)
|
||||
|
||||
frappe.utils.scheduler.toggle_scheduler(with_scheduler_enabled)
|
||||
|
||||
@cmd
|
||||
def add_system_manager(email, first_name=None, last_name=None):
|
||||
import frappe.utils.user
|
||||
|
|
@ -565,6 +595,24 @@ def run_scheduler_event(event, force=False):
|
|||
frappe.utils.scheduler.trigger(frappe.local.site, event, now=force)
|
||||
frappe.destroy()
|
||||
|
||||
@cmd
|
||||
def enable_scheduler():
|
||||
import frappe.utils.scheduler
|
||||
frappe.connect()
|
||||
frappe.utils.scheduler.enable_scheduler()
|
||||
frappe.db.commit()
|
||||
print "Enabled"
|
||||
frappe.destroy()
|
||||
|
||||
@cmd
|
||||
def disable_scheduler():
|
||||
import frappe.utils.scheduler
|
||||
frappe.connect()
|
||||
frappe.utils.scheduler.disable_scheduler()
|
||||
frappe.db.commit()
|
||||
print "Disabled"
|
||||
frappe.destroy()
|
||||
|
||||
# replace
|
||||
@cmd
|
||||
def replace(search_regex, replacement, extn, force=False):
|
||||
|
|
|
|||
|
|
@ -1,92 +1,100 @@
|
|||
{
|
||||
"creation": "2014-04-17 16:53:52.640856",
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"document_type": "System",
|
||||
"creation": "2014-04-17 16:53:52.640856",
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"document_type": "System",
|
||||
"fields": [
|
||||
{
|
||||
"fieldname": "localization",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Localization",
|
||||
"fieldname": "localization",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Localization",
|
||||
"permlevel": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "language",
|
||||
"fieldtype": "Select",
|
||||
"in_list_view": 1,
|
||||
"label": "Language",
|
||||
"options": "Loading...",
|
||||
"permlevel": 0,
|
||||
"reqd": 1,
|
||||
"fieldname": "language",
|
||||
"fieldtype": "Select",
|
||||
"in_list_view": 1,
|
||||
"label": "Language",
|
||||
"options": "Loading...",
|
||||
"permlevel": 0,
|
||||
"reqd": 1,
|
||||
"search_index": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "time_zone",
|
||||
"fieldtype": "Select",
|
||||
"label": "Time Zone",
|
||||
"permlevel": 0,
|
||||
"fieldname": "time_zone",
|
||||
"fieldtype": "Select",
|
||||
"label": "Time Zone",
|
||||
"permlevel": 0,
|
||||
"reqd": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "date_and_number_format",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Date and Number Format",
|
||||
"fieldname": "date_and_number_format",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Date and Number Format",
|
||||
"permlevel": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "date_format",
|
||||
"fieldtype": "Select",
|
||||
"label": "Date Format",
|
||||
"options": "yyyy-mm-dd\ndd-mm-yyyy\ndd/mm/yyyy\ndd.mm.yyyy\nmm/dd/yyyy\nmm-dd-yyyy",
|
||||
"permlevel": 0,
|
||||
"fieldname": "date_format",
|
||||
"fieldtype": "Select",
|
||||
"label": "Date Format",
|
||||
"options": "yyyy-mm-dd\ndd-mm-yyyy\ndd/mm/yyyy\ndd.mm.yyyy\nmm/dd/yyyy\nmm-dd-yyyy",
|
||||
"permlevel": 0,
|
||||
"reqd": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "number_format",
|
||||
"fieldtype": "Select",
|
||||
"label": "Number Format",
|
||||
"options": "#,###.##\n#.###,##\n# ###.##\n# ###,##\n#,###.###\n#,##,###.##\n#.###\n#,###",
|
||||
"permlevel": 0,
|
||||
"fieldname": "number_format",
|
||||
"fieldtype": "Select",
|
||||
"label": "Number Format",
|
||||
"options": "#,###.##\n#.###,##\n# ###.##\n# ###,##\n#,###.###\n#,##,###.##\n#.###\n#,###",
|
||||
"permlevel": 0,
|
||||
"reqd": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "float_precision",
|
||||
"fieldtype": "Select",
|
||||
"label": "Float Precision",
|
||||
"options": "\n2\n3\n4\n5\n6",
|
||||
"fieldname": "float_precision",
|
||||
"fieldtype": "Select",
|
||||
"label": "Float Precision",
|
||||
"options": "\n2\n3\n4\n5\n6",
|
||||
"permlevel": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "security",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Security",
|
||||
"fieldname": "security",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Security",
|
||||
"permlevel": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"default": "06:00",
|
||||
"description": "Session Expiry in Hours e.g. 06:00",
|
||||
"fieldname": "session_expiry",
|
||||
"fieldtype": "Data",
|
||||
"label": "Session Expiry",
|
||||
"options": "",
|
||||
"default": "06:00",
|
||||
"description": "Session Expiry in Hours e.g. 06:00",
|
||||
"fieldname": "session_expiry",
|
||||
"fieldtype": "Data",
|
||||
"label": "Session Expiry",
|
||||
"options": "",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"description": "Run scheduled jobs only if checked",
|
||||
"fieldname": "enable_scheduler",
|
||||
"fieldtype": "Check",
|
||||
"in_list_view": 0,
|
||||
"label": "Enable Scheduled Jobs",
|
||||
"permlevel": 0
|
||||
}
|
||||
],
|
||||
"icon": "icon-cog",
|
||||
"issingle": 1,
|
||||
"modified": "2014-05-27 08:00:24.700595",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Core",
|
||||
"name": "System Settings",
|
||||
"name_case": "",
|
||||
"owner": "Administrator",
|
||||
],
|
||||
"icon": "icon-cog",
|
||||
"issingle": 1,
|
||||
"modified": "2014-06-02 02:09:03.623094",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Core",
|
||||
"name": "System Settings",
|
||||
"name_case": "",
|
||||
"owner": "Administrator",
|
||||
"permissions": [
|
||||
{
|
||||
"create": 1,
|
||||
"permlevel": 0,
|
||||
"read": 1,
|
||||
"role": "System Manager",
|
||||
"create": 1,
|
||||
"permlevel": 0,
|
||||
"read": 1,
|
||||
"role": "System Manager",
|
||||
"write": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -17,11 +17,11 @@ class SystemSettings(Document):
|
|||
|
||||
def on_update(self):
|
||||
for df in self.meta.get("fields"):
|
||||
if df.fieldtype in ("Select", "Data"):
|
||||
if df.fieldtype in ("Select", "Data", "Check"):
|
||||
frappe.db.set_default(df.fieldname, self.get(df.fieldname))
|
||||
|
||||
set_default_language(self.language)
|
||||
|
||||
if self.language:
|
||||
set_default_language(self.language)
|
||||
|
||||
@frappe.whitelist()
|
||||
def load():
|
||||
|
|
|
|||
|
|
@ -32,3 +32,4 @@ frappe.patches.v4_0.set_user_gravatar
|
|||
frappe.patches.v4_0.update_custom_field_insert_after
|
||||
frappe.patches.v4_0.set_user_permissions
|
||||
frappe.patches.v4_0.create_custom_field_for_owner_match
|
||||
frappe.patches.v4_0.enable_scheduler_in_system_settings
|
||||
|
|
|
|||
12
frappe/patches/v4_0/enable_scheduler_in_system_settings.py
Normal file
12
frappe/patches/v4_0/enable_scheduler_in_system_settings.py
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
||||
# MIT License. See license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe.utils.scheduler import disable_scheduler, enable_scheduler
|
||||
|
||||
def execute():
|
||||
if frappe.db.get_global("disable_scheduler"):
|
||||
disable_scheduler()
|
||||
else:
|
||||
enable_scheduler()
|
||||
|
|
@ -34,8 +34,7 @@ def after_install():
|
|||
pass
|
||||
|
||||
# all roles to admin
|
||||
frappe.get_doc("User", "Administrator").add_roles(*frappe.db.sql_list("""
|
||||
select name from tabRole"""))
|
||||
frappe.get_doc("User", "Administrator").add_roles(*frappe.db.sql_list("""select name from tabRole"""))
|
||||
|
||||
# update admin password
|
||||
from frappe.auth import _update_password
|
||||
|
|
|
|||
|
|
@ -104,13 +104,19 @@ def log(method, message=None):
|
|||
return message
|
||||
|
||||
def is_scheduler_disabled():
|
||||
return frappe.utils.cint(frappe.db.get_global("disable_scheduler"))
|
||||
return not frappe.utils.cint(frappe.db.get_default("enable_scheduler"))
|
||||
|
||||
def toggle_scheduler(enable):
|
||||
ss = frappe.get_doc("System Settings")
|
||||
ss.enable_scheduler = 1 if enable else 0
|
||||
ss.ignore_mandatory = True
|
||||
ss.save()
|
||||
|
||||
def enable_scheduler():
|
||||
frappe.db.set_global("disable_scheduler", 0)
|
||||
toggle_scheduler(True)
|
||||
|
||||
def disable_scheduler():
|
||||
frappe.db.set_global("disable_scheduler", 1)
|
||||
toggle_scheduler(False)
|
||||
|
||||
def get_errors(from_date, to_date, limit):
|
||||
errors = frappe.db.sql("""select modified, method, error from `tabScheduler Log`
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue