def retrieve_meeting_to_remind(session, offset=30): """ Retrieve all the meetings for which we have to send a reminder. :arg session: the database session to use. :kwarg offset: the frequency at which the cron job is ran in order to avoid sending twice the same reminder. """ today = datetime.utcnow() meetings = [] for reminder_time in [12, 24, 48, 168]: # Retrieve meeting planned in less than X hours new_date = _generate_date_rounded_to_the_hour(today, reminder_time) end_date = new_date + timedelta(minutes=offset) meetings.extend(Meeting.get_meeting_with_reminder( session, new_date.date(), new_date.time(), end_date.time(), 'H-%s' % reminder_time)) return meetings