in gatekeeper.py [0:0]
def offboard_get(session_id):
log.info("stream: %s" % session_id)
if session_id in subscriptions:
def gen(session_id):
q = subscriptions[session_id]
q_size = len(q)
log.info("pulling queue: %s" % q)
runner = None
suspend_user = True
while not q.empty():
r = q.get()
log.info("pulling from queue: %s" % r)
if "action" in r.keys():
# do not suspend if we are only performing non-google apps actions
if r["action"] in NO_SUSPEND_ACTIONS and q_size == 1:
suspend_user = False
# do not suspend the user if we are setting an ooo msg
if r["action"] == "set_ooo_msg":
suspend_user = False
# do not suspend the user if we are resetting due to lost asset
if r["action"] == "lost_asset":
suspend_user = False
# handle output for calendar events ownership
if "change_events_ownership" in r.keys():
value = r["change_events_ownership"]
if value:
result = "<p>CHANGE EVENTS OWNERSHIP: %s</p>" % value
else:
result = "<p>CHANGE EVENTS OWNERSHIP: <span class='text-success'>SUCCESS</span></p>"
elif r["action"] != "lost_asset":
runner = r["runner"]
result = runner.perform_action(r["connector"], r["action"], r["params"])
else:
result = "<p>RESET SIGN-IN COOKIES: <span class='text-success'>SUCCESS</span></p>"
log.info("result: %s" % result)
ev = ServerSentEvent(str(result))
yield ev.encode()
if runner is not None:
suspend = runner.suspend_user(True)
log.info("suspend: %s" % suspend)
if not suspend_user:
suspend = runner.suspend_user(False)
log.info("un-suspend: %s" % suspend)
del subscriptions[session_id]
log.info("removing queue: %s" % q)
return Response(gen(session_id), mimetype="text/event-stream")
else:
def error():
err = ""
ev = ServerSentEvent(err)
yield ev.encode()
return Response(error(), mimetype="text/event-stream")