Enforce randomness on unspecified value of scheduled task

Closes #13484
This commit is contained in:
Cédric Krier
2024-08-30 17:52:43 +02:00
parent 546e8c92f5
commit 8b8e54df23
2 changed files with 10 additions and 3 deletions
+7 -3
View File
@@ -3,6 +3,7 @@
import datetime
import hashlib
import logging
import random
import time
from collections import defaultdict
@@ -181,15 +182,18 @@ class Cron(DeactivableMixin, ModelSQL, ModelView):
microsecond=0,
second=0,
minute=(
self.minute
(self.minute if self.minute is not None
else random.randint(0, 59))
if self.interval_type != 'minutes'
else None),
hour=(
self.hour
(self.hour if self.hour is not None
else random.randint(0, 23))
if self.interval_type not in {'minutes', 'hours'}
else None),
day=(
self.day
(self.day if self.day is not None
else random.randint(0, 31))
if self.interval_type not in {
'minutes', 'hours', 'days', 'weeks'}
else None),
+3
View File
@@ -515,6 +515,7 @@ class IrCronTestCase(TestCase):
cron.interval_number = 1
cron.interval_type = 'days'
cron.hour = 1
cron.minute = 0
# Quebec is UTC-5
self.assertEqual(
@@ -529,6 +530,7 @@ class IrCronTestCase(TestCase):
cron.interval_number = 1
cron.interval_type = 'days'
cron.hour = 2
cron.minute = 30
# 2022-03-13 is the day of DST switch
# Quebec is UTC-4
@@ -542,6 +544,7 @@ class IrCronTestCase(TestCase):
cron = self._get_cron()
cron.interval_number = 1
cron.interval_type = 'hours'
cron.minute = 30
# 2022-11-06 is the day of DST switch
# Quebec is UTC-5