"""class to manage schedules""" import datetime from logger import mylog import conf # ------------------------------------------------------------------------------- class schedule_class: def __init__( self, service, scheduleObject, last_next_schedule, was_last_schedule_used, last_run=0, ): self.service = service self.scheduleObject = scheduleObject self.last_next_schedule = last_next_schedule self.last_run = last_run self.was_last_schedule_used = was_last_schedule_used def runScheduleCheck(self): result = False # Initialize the last run time if never run before if self.last_run == 0: self.last_run = ( datetime.datetime.now(conf.tz) - datetime.timedelta(days=365) ).replace(microsecond=0) # get the current time with the currently specified timezone nowTime = datetime.datetime.now(conf.tz).replace(microsecond=0) # Run the schedule if the current time is past the schedule time we saved last time and # (maybe the following check is unnecessary) if nowTime > self.last_next_schedule: mylog("verbose", f"[Scheduler] run for {self.service}: YES") self.was_last_schedule_used = True result = True else: mylog("verbose", f"[Scheduler] run for {self.service}: NO") # mylog('debug',f'[Scheduler] - nowTime {nowTime}') # mylog('debug',f'[Scheduler] - self.last_next_schedule {self.last_next_schedule}') # mylog('debug',f'[Scheduler] - self.last_run {self.last_run}') if self.was_last_schedule_used: self.was_last_schedule_used = False self.last_next_schedule = self.scheduleObject.next() return result