in cli/pollexy.py [0:0]
def queue(simulate, simulated_date, verbose):
log = logging.getLogger('PollexyCli')
if verbose:
os.environ['LOG_LEVEL'] = 'DEBUG'
log.setLevel(logging.DEBUG)
try:
if simulated_date:
dt = arrow.get(simulated_date)
else:
dt = arrow.utcnow()
scheduler = Scheduler()
msgs = scheduler.get_messages()
if len(msgs) == 0:
click.echo("No messages are ready to be queued")
return
log.debug("Number of messages to be scheduled: %s" % len(msgs))
for m in msgs:
if not simulate:
pm = PersonManager()
p = pm.get_person(m.person_name)
if not p:
log.warn(m.person_name +
"does not have an entry in the " +
"Person table")
continue
if p.all_available_count(dt) == 0:
log.debug('No locations available for %s' %
m.person_name)
continue
avail_windows = p.all_available(dt)
log.debug('# of locations avail: {}, last_loc={}'
.format(p.all_available_count(dt),
m.last_loc))
if m.last_loc == p.all_available_count(dt)-1:
log.debug('Resetting to first location')
idx = 0
else:
log.debug('Moving to next location')
idx = m.last_loc + 1
active_window = avail_windows[int(idx)]
next_exp = m.next_expiration_utc.isoformat()
mm = MessageManager(LocationName=active_window.location_name)
log.debug("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,
RequiredBots=m.required_bots,
IceBreaker=m.ice_breaker,
Introduction=m.introduction,
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)
else:
click.echo("Publishing message(simulated):")
click.echo(str(m))
except Exception:
print 'here'
click.echo(traceback.print_exc())
raise