def schedule_randomly(self, message): logger.debug('Setting message {} to intermittent schedule'.format( message['message'])) webhook = message['webhook'] unflat_text = message['message'] schedule = message['schedule'] if 'days' in schedule and weekdays[ self.date.weekday()] not in schedule['days']: return if 'end_date' in schedule and schedule['end_date'] <= self.date: return start_time = datetime.combine( self.date, time.fromisoformat(schedule['start_time'])) end_time = datetime.combine(self.date, time.fromisoformat(schedule['end_time'])) min_interval, max_interval = ( int(mins) * 60 for mins in schedule['minutes_apart_range'].split('-')) for message_time in self.get_random_times(start_time, end_time, min_interval, max_interval): if datetime.now() > message_time: logger.debug('Skipping message {}: already past {}'.format( unflat_text, message_time.isoformat())) continue new_message = Message(webhook, unflat_text, self.rules, message_time) self.messages.append(new_message)
def schedule_hourly(self, message): logger.debug('Setting message {} to hourly schedule'.format( message['message'])) start_time = datetime.combine(self.date, time(0, 0, 0)) interval = message['schedule']['interval'] webhook = message['webhook'] unflat_text = message['message'] for message_time in (start_time + timedelta(hours=n) for n in range(0, 24, interval)): if datetime.now() > message_time: logger.debug('Skipping message {}: already past {}'.format( unflat_text, message_time.isoformat())) continue new_message = Message(webhook, unflat_text, self.rules, message_time) self.messages.append(new_message)
def schedule_weekly(self, message): day_of_week = weekdays[self.date.weekday()] webhook = message['webhook'] unflat_text = message['message'] if day_of_week in message['schedule']['days']: dt = self.date h, m = message['schedule']['time'].split(':') tm = time(int(h), int(m)) message_time = datetime.combine(dt, tm) if datetime.now() > message_time + timedelta(minutes=15): logger.debug('Skipping message {}: already past {}'.format( unflat_text, message_time.isoformat())) return new_message = Message(webhook, unflat_text, self.rules, message_time) self.messages.append(new_message)