def offboard_get()

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")