diff --git a/frappe/core/doctype/server_script/server_script.json b/frappe/core/doctype/server_script/server_script.json index 3aedd4f542..67cb6e75ea 100644 --- a/frappe/core/doctype/server_script/server_script.json +++ b/frappe/core/doctype/server_script/server_script.json @@ -9,6 +9,7 @@ "script_type", "reference_doctype", "event_frequency", + "cron_format", "doctype_event", "api_method", "allow_guest", @@ -99,7 +100,7 @@ "fieldtype": "Select", "label": "Event Frequency", "mandatory_depends_on": "eval:doc.script_type == \"Scheduler Event\"", - "options": "All\nHourly\nDaily\nWeekly\nMonthly\nYearly\nHourly Long\nDaily Long\nWeekly Long\nMonthly Long" + "options": "All\nHourly\nDaily\nWeekly\nMonthly\nYearly\nHourly Long\nDaily Long\nWeekly Long\nMonthly Long\nCron" }, { "fieldname": "module", @@ -132,6 +133,12 @@ "fieldname": "rate_limit_seconds", "fieldtype": "Int", "label": "Time Window (Seconds)" + }, + { + "depends_on": "eval:doc.event_frequency==='Cron'", + "fieldname": "cron_format", + "fieldtype": "Data", + "label": "Cron Format" } ], "index_web_pages_for_search": 1, @@ -141,7 +148,7 @@ "link_fieldname": "server_script" } ], - "modified": "2023-05-16 11:03:58.282680", + "modified": "2023-05-27 16:33:16.595424", "modified_by": "Administrator", "module": "Core", "name": "Server Script", diff --git a/frappe/core/doctype/server_script/server_script.py b/frappe/core/doctype/server_script/server_script.py index a9b870e240..50f13fedaa 100644 --- a/frappe/core/doctype/server_script/server_script.py +++ b/frappe/core/doctype/server_script/server_script.py @@ -52,7 +52,9 @@ class ServerScript(Document): def sync_scheduler_events(self): """Create or update Scheduled Job Type documents for Scheduler Event Server Scripts""" if not self.disabled and self.event_frequency and self.script_type == "Scheduler Event": - setup_scheduler_events(script_name=self.name, frequency=self.event_frequency) + setup_scheduler_events( + script_name=self.name, frequency=self.event_frequency, cron_format=self.cron_format + ) def clear_scheduled_events(self): """Deletes existing scheduled jobs by Server Script if self.event_frequency has changed""" @@ -171,7 +173,7 @@ class ServerScript(Document): return items -def setup_scheduler_events(script_name, frequency): +def setup_scheduler_events(script_name: str, frequency: str, cron_format: str | None = None): """Creates or Updates Scheduled Job Type documents based on the specified script name and frequency Args: @@ -188,6 +190,7 @@ def setup_scheduler_events(script_name, frequency): "method": method, "frequency": frequency, "server_script": script_name, + "cron_format": cron_format, } ).insert() @@ -200,6 +203,7 @@ def setup_scheduler_events(script_name, frequency): return doc.frequency = frequency + doc.cron_format = cron_format doc.save() frappe.msgprint(_("Scheduled execution for script {0} has updated").format(script_name))