def current_user(self): if not hasattr(self, "_current_user"): self._current_user = None current_session = self.current_session cookie = get_user_from_cookie(self.request.cookies, FACEBOOK_APP_ID, FACEBOOK_APP_SECRET) if cookie: # Store a local instance of the user data so we don't need # a round-trip to Facebook on every request user = ChillUser.get_by_key_name(cookie["uid"]) if not user: graph = GraphAPI(cookie["access_token"]) profile = graph.get_object("me") album_id = str(graph.put_object("me", "albums", name="Chillbrain Photos")["id"]) user = ChillUser(key_name=str(profile["id"]), id=str(profile["id"]), name=profile["name"], access_token=cookie["access_token"], album=album_id) user.put() elif user.access_token != cookie["access_token"]: user.access_token = cookie["access_token"] user.put() self._current_user = user # if there is no FB cookie then try to pull the temp user from the active session elif current_session.is_active(): self._current_user = BaseUser.get(current_session[SESS_KEY_USER]) # otherwise create a new temporary user else: self._current_user = BaseUser().create() return self._current_user
def migrate_session(user, session): session.set_quick(SESS_TEMP_USER, False) temp = BaseUser.get(session[SESS_KEY_USER]) user.migrate(temp) temp.delete() session[SESS_KEY_USER] = user.key()