@@ -1,2 +1,2 @@ | |||||
exclude_paths: | exclude_paths: | ||||
- '*.sql' | |||||
- '**.sql' |
@@ -13,7 +13,7 @@ | |||||
"field_order": [ | "field_order": [ | ||||
"stopped", | "stopped", | ||||
"method", | "method", | ||||
"queue", | |||||
"frequency", | |||||
"cron_format", | "cron_format", | ||||
"last_execution", | "last_execution", | ||||
"create_log" | "create_log" | ||||
@@ -27,16 +27,6 @@ | |||||
"read_only": 1, | "read_only": 1, | ||||
"reqd": 1 | "reqd": 1 | ||||
}, | }, | ||||
{ | |||||
"fieldname": "queue", | |||||
"fieldtype": "Select", | |||||
"in_list_view": 1, | |||||
"in_standard_filter": 1, | |||||
"label": "Queue", | |||||
"options": "All\nHourly\nDaily\nDaily Long\nWeekly\nWeekly Long\nMonthly\nMonthly Long\nCron\nYearly\nAnnual", | |||||
"read_only": 1, | |||||
"reqd": 1 | |||||
}, | |||||
{ | { | ||||
"default": "0", | "default": "0", | ||||
"fieldname": "stopped", | "fieldname": "stopped", | ||||
@@ -63,6 +53,16 @@ | |||||
"fieldtype": "Data", | "fieldtype": "Data", | ||||
"label": "Cron Format", | "label": "Cron Format", | ||||
"read_only": 1 | "read_only": 1 | ||||
}, | |||||
{ | |||||
"fieldname": "frequency", | |||||
"fieldtype": "Select", | |||||
"in_list_view": 1, | |||||
"in_standard_filter": 1, | |||||
"label": "Frequency", | |||||
"options": "All\nHourly\nDaily\nDaily Long\nWeekly\nWeekly Long\nMonthly\nMonthly Long\nCron\nYearly\nAnnual", | |||||
"read_only": 1, | |||||
"reqd": 1 | |||||
} | } | ||||
], | ], | ||||
"in_create": 1, | "in_create": 1, | ||||
@@ -72,7 +72,7 @@ | |||||
"link_fieldname": "scheduled_job_type" | "link_fieldname": "scheduled_job_type" | ||||
} | } | ||||
], | ], | ||||
"modified": "2019-09-25 11:54:58.013623", | |||||
"modified": "2019-09-27 12:19:23.259989", | |||||
"modified_by": "Administrator", | "modified_by": "Administrator", | ||||
"module": "Core", | "module": "Core", | ||||
"name": "Scheduled Job Type", | "name": "Scheduled Job Type", | ||||
@@ -16,7 +16,7 @@ class ScheduledJobType(Document): | |||||
self.name = '.'.join(self.method.split('.')[-2:]) | self.name = '.'.join(self.method.split('.')[-2:]) | ||||
def validate(self): | def validate(self): | ||||
if self.queue != 'All': | |||||
if self.frequency != 'All': | |||||
# force logging for all events other than continuous ones (ALL) | # force logging for all events other than continuous ones (ALL) | ||||
self.create_log = 1 | self.create_log = 1 | ||||
@@ -34,10 +34,6 @@ class ScheduledJobType(Document): | |||||
enqueue('frappe.core.doctype.scheduled_job_type.scheduled_job_type.run_scheduled_job', | enqueue('frappe.core.doctype.scheduled_job_type.scheduled_job_type.run_scheduled_job', | ||||
queue = self.get_queue_name(), job_type=self.method) | queue = self.get_queue_name(), job_type=self.method) | ||||
return True | return True | ||||
else: | |||||
pass | |||||
else: | |||||
pass | |||||
return False | return False | ||||
@@ -69,7 +65,7 @@ class ScheduledJobType(Document): | |||||
} | } | ||||
if not self.cron_format: | if not self.cron_format: | ||||
self.cron_format = CRON_MAP[self.queue] | |||||
self.cron_format = CRON_MAP[self.frequency] | |||||
return croniter(self.cron_format, | return croniter(self.cron_format, | ||||
get_datetime(self.last_execution)).get_next(datetime) | get_datetime(self.last_execution)).get_next(datetime) | ||||
@@ -105,7 +101,7 @@ class ScheduledJobType(Document): | |||||
frappe.db.commit() | frappe.db.commit() | ||||
def get_queue_name(self): | def get_queue_name(self): | ||||
return 'long' if ('Long' in self.queue) else 'default' | |||||
return 'long' if ('Long' in self.frequency) else 'default' | |||||
@frappe.whitelist() | @frappe.whitelist() | ||||
def execute_event(doc): | def execute_event(doc): | ||||
@@ -145,16 +141,16 @@ def insert_cron_event(events, all_events): | |||||
def insert_event_list(events, event_type, all_events): | def insert_event_list(events, event_type, all_events): | ||||
for event in events: | for event in events: | ||||
all_events.append(event) | all_events.append(event) | ||||
queue = event_type.replace('_', ' ').title() | |||||
insert_single_event(queue, event) | |||||
frequency = event_type.replace('_', ' ').title() | |||||
insert_single_event(frequency, event) | |||||
def insert_single_event(queue, event, cron_format = None): | |||||
def insert_single_event(frequency, event, cron_format = None): | |||||
if not frappe.db.exists('Scheduled Job Type', dict(method=event)): | if not frappe.db.exists('Scheduled Job Type', dict(method=event)): | ||||
frappe.get_doc(dict( | frappe.get_doc(dict( | ||||
doctype = 'Scheduled Job Type', | doctype = 'Scheduled Job Type', | ||||
method = event, | method = event, | ||||
cron_format = cron_format, | cron_format = cron_format, | ||||
queue = queue | |||||
frequency = frequency | |||||
)).insert() | )).insert() | ||||
def clear_events(all_events, scheduler_events): | def clear_events(all_events, scheduler_events): | ||||
@@ -20,16 +20,16 @@ class TestScheduledJobType(unittest.TestCase): | |||||
def test_sync_jobs(self): | def test_sync_jobs(self): | ||||
all_job = frappe.get_doc('Scheduled Job Type', | all_job = frappe.get_doc('Scheduled Job Type', | ||||
dict(method='frappe.email.queue.flush')) | dict(method='frappe.email.queue.flush')) | ||||
self.assertEqual(all_job.queue, 'All') | |||||
self.assertEqual(all_job.frequency, 'All') | |||||
daily_job = frappe.get_doc('Scheduled Job Type', | daily_job = frappe.get_doc('Scheduled Job Type', | ||||
dict(method='frappe.email.queue.clear_outbox')) | dict(method='frappe.email.queue.clear_outbox')) | ||||
self.assertEqual(daily_job.queue, 'Daily') | |||||
self.assertEqual(daily_job.frequency, 'Daily') | |||||
# check if cron jobs are synced | # check if cron jobs are synced | ||||
cron_job = frappe.get_doc('Scheduled Job Type', | cron_job = frappe.get_doc('Scheduled Job Type', | ||||
dict(method='frappe.oauth.delete_oauth2_data')) | dict(method='frappe.oauth.delete_oauth2_data')) | ||||
self.assertEqual(cron_job.queue, 'Cron') | |||||
self.assertEqual(cron_job.frequency, 'Cron') | |||||
self.assertEqual(cron_job.cron_format, '0/15 * * * *') | self.assertEqual(cron_job.cron_format, '0/15 * * * *') | ||||
def test_daily_job(self): | def test_daily_job(self): | ||||