Enable Scheduler via Setup > System Settings

This commit is contained in:
Anand Doshi 2014-06-02 12:09:06 +05:30
parent e63ffa80df
commit 964711a3e0
7 changed files with 149 additions and 75 deletions

View file

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

View file

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

View file

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

View file

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

View 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()

View file

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

View file

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