def feed(cls, u): fs: List[Follow] = Follow.all(follower_id=u.id) weibos = [] for f in fs: follwed_weibos = Weibo.all(user_id=f.followed_id) weibos.extend(follwed_weibos) return weibos
def user_detail(id): u = User.one(id=id) if u is None: abort(404) else: topics = [t.json() for t in u.topics] follower_f = Follow.all(user_id=u.id) followed_f = Follow.all(follower_id=u.id) for t in topics: t['pulished'] = True data = { 'id': u.id, 'avatar': u.avatar, 'username': u.username, 'topics': topics, 'followers': [get_user_data(f.follower_id) for f in follower_f], 'followed': [get_user_data(f.user_id) for f in followed_f], } return jsonify(data)
def current_user(): # 从 session 中找到 user_id 字段, 找不到就 -1 # 然后用 id 找用户 # 找不到就返回 None uid = session.get('user_id', -1) u = User.one(id=uid) if u is not None: ts = u.topics involved_ts_count = u.involved_ts_count() fs = Follow.all(user_id=u.id) followeds = Follow.all(follower_id=u.id) data = { 'id': u.id, 'avatar': u.avatar, 'username': u.username, 'topic_count': len(ts), 'involved_count': involved_ts_count, 'follower_count': len(fs), 'followed_ids': [f.user_id for f in followeds], } else: g = User.guest() data = { 'id': g.id, 'avatar': g.avatar, 'username': g.username, 'is_guest': True, } resp = make_response(jsonify(data), 200) # 设置 xsrf token token = uuid.uuid4() token = bytes(str(token), encoding='utf-8') resp.set_cookie('_xsrf', token, httponly=True) resp.headers['token'] = token return resp
def followers(id): fs = Follow.all(user_id=id) us = [get_user_data(f.follower_id) for f in fs] return jsonify(us)
def followed_users(id): """得到当前登陆用户的关注用户""" fs = Follow.all(follower_id=id) us = [get_user_data(f.user_id) for f in fs] return jsonify(us)