def handler()

in queue_messages.py [0:0]


def handler(event, context):
    scheduler = Scheduler()
    dt = arrow.utcnow()
    logging.info("Getting messages")
    msgs = scheduler.get_messages()
    logging.info("messages = %s" % len(msgs))
    if len(msgs) == 0:
        logging.info("No messages are ready to be queued")
    else:
        logging.info("Number of messages to be scheduled: %s" % len(msgs))

    for m in msgs:
        logging.info("Getting person %s " % m.person_name)
        pm = PersonManager()
        p = pm.get_person(m.person_name)
        if not p:
            logging.warn(m.person_name +
                         "does not have an entry in the " +
                         "Person table . . . skipping")
            continue
        if p.all_available_count(dt) == 0:
            logging.warn('No locations available for %s . . . skipping' %
                         m.person_name)
            continue
        avail_windows = p.all_available(dt)
        logging.info('# of locations avail: {}, last_loc={}'
                     .format(p.all_available_count(dt),
                             m.last_loc))
        if p.all_available_count(dt) > 1 and \
                m.last_loc == p.all_available_count(dt)-1:
            logging.info('Resetting to first location')
            idx = 0
        else:
            if p.all_available_count(dt) > 1:
                logging.info('Moving to next location')
                idx = m.last_loc + 1
            else:
                idx = 0

            active_window = avail_windows[int(idx)]
            next_exp = m.next_expiration_utc.isoformat()
            mm = MessageManager(LocationName=active_window.location_name)
            logging.info("Publishing message for person %s to location %s"
                         % (m.person_name, active_window.location_name))
            mm.publish_message(Body=m.body, UUID=m.uuid_key,
                               PersonName=m.person_name,
                               NoMoreOccurrences=m.no_more_occurrences,
                               BotNames=m.bot_names,
                               IceBreaker=m.ice_breaker,
                               RequiredBots=m.required_bots,
                               ExpirationDateTimeInUtc=next_exp)
            scheduler.update_queue_status(m.uuid_key, m.person_name, True)
            scheduler.update_last_location(m.uuid_key, m.person_name, idx)