def post_username(): username = request.forms.get('username') if username: username = username.strip() if not username: if is_XHR(): return render_json({"error": "need valid username"}, 409) else: redirect("/") if UserProcess.is_still_processing(username): if is_XHR(): return render_json({ "update": "/get-update/%s" % username, "ws_update": "ws://%s/ws/%s" % (HOST, username) }) else: redirect("/await/%s" % username) UserProcess(username).get_new_recommendations() if is_XHR(): return render_json({ "update": "/get-update/%s" % username, "ws_update": "ws://%s/ws/%s" % (HOST, username) }) redirect("/await/%s" % username)
def get_update(username): g = UserProcess.get_greenlet_for(username) if not g: return render_json({"done": True, "results": "/results/%s" % username}) g.join(55) if g.ready(): return render_json({"done": True, "results": "/results/%s" % username}) else: return render_json({ "done": False, "update": "/get-update/%s" % username })
def echo(ws, username): if not ws: return "please provide websocket" q = UserProcess.get_message_queue(username) try: if not UserProcess.is_still_processing(username): return ws.send( json.dumps({ "done": True, "results": "/results/%s" % username })) while True: msg = q.get() if msg.get("type") == "everything" and msg.get("done"): return ws.send( json.dumps({ "done": True, "results": "/results/%s" % username })) else: ws.send(json.dumps({"done": False, "message": msg})) finally: UserProcess.remove_message_queue(username, q)
def show_more(username, topic, offset, past_album): results = UserProcess(username).retrieve_results_for_topic( int(topic), int(offset), unicode(past_album.decode("utf-8"))) if is_XHR(): return render("show-more-xhr", username=username, topic=topic, results=results, nextoffset=int(offset) + len(results)) return render("show-more", username=username, topic=topic, results=results, nextoffset=int(offset) + len(results))
def show_results(username): if UserProcess.is_still_processing(username): redirect("/await/%s" % username) results = UserProcess(username).retrieve_results() return render("results", username=username, results=results)
def await_results(username): if not UserProcess.is_still_processing(username): redirect("/results/%s" % username) return render("await", username=username)