コード例 #1
0
def get_followeds(id):
    '''返回用户已关注的人的列表'''
    user = User.query.get_or_404(id)
    page = request.args.get('page', 1, type=int)
    per_page = min(
        request.args.get('per_page',
                         current_app.config['USERS_PER_PAGE'],
                         type=int), 100)
    data = User.to_collection_dict(user.followeds,
                                   page,
                                   per_page,
                                   'api.get_followeds',
                                   id=id)
    # 为每个 followed 添加 is_following 标志位
    for item in data['items']:
        item['is_following'] = g.current_user.is_following(
            User.query.get(item['id']))
        # 获取用户开始关注 followed 的时间
        res = db.engine.execute(
            "select * from followers where follower_id={} and followed_id={}".
            format(user.id, item['id']))
        item['timestamp'] = datetime.strptime(
            list(res)[0][2], '%Y-%m-%d %H:%M:%S.%f')
    # 按 timestamp 排序一个字典列表(倒序,最新关注的人在最前面)
    data['items'] = sorted(data['items'],
                           key=itemgetter('timestamp'),
                           reverse=True)
    return jsonify(data)
コード例 #2
0
def get_department_members(id):
    """
    返回部门内用户具体信息
    ---
    tags:
      - 部门相关接口
    description:
        部门信息接口
    parameters:
      - name: id
        in: path
        type: integer
        description: 部门id
    responses:
      200:
        description: 
    """
    department = Department.query.get_or_404(id)
    page = request.args.get('page', 1, type=int)
    per_page = min(
        request.args.get('per_page',
                         current_app.config['USERS_PER_PAGE'],
                         type=int), 100)
    data = User.to_collection_dict(department.members.order_by(User.id.desc()),
                                   page,
                                   per_page,
                                   'api.get_department_members',
                                   id=id)
    return ResMsg(data=data).data
コード例 #3
0
def get_followers(id):
    '''返回用户的粉丝列表'''
    user = User.query.get_or_404(id)
    page = request.args.get('page', 1, type=int)
    per_page = min(
        request.args.get('per_page',
                         current_app.config['USERS_PER_PAGE'],
                         type=int), 100)
    data = User.to_collection_dict(user.followers,
                                   page,
                                   per_page,
                                   'api.get_followers',
                                   id=id)
    # 为每个 follower 添加 is_following 标志位
    for item in data['items']:
        item['is_following'] = g.current_user.is_following(
            User.query.get(item['id']))
        # 获取 follower 开始关注该用户的时间
        res = db.engine.execute(
            "select * from followers where follower_id={} and followed_id={}".
            format(item['id'], user.id))
        item['timestamp'] = datetime.strptime(
            list(res)[0][2], '%Y-%m-%d %H:%M:%S.%f')
    # 按 timestamp 排序一个字典列表(倒序,最新的粉丝在最前面)
    data['items'] = sorted(data['items'],
                           key=itemgetter('timestamp'),
                           reverse=True)
    # 标记哪些粉丝是新的
    last_read_time = user.last_follows_read_time or datetime(1900, 1, 1)
    for item in data['items']:
        if item['timestamp'] > last_read_time:
            item['is_new'] = True
    # 更新 last_follows_read_time 属性值
    user.last_follows_read_time = datetime.utcnow()
    # 将新粉丝通知的计数归零
    user.add_notification('unread_follows_count', 0)
    db.session.commit()
    return jsonify(data)
コード例 #4
0
def get_users():
    """
    返回用户合集,分页显示
    ---
    tags:
      - 用户相关接口
    description:
        用户信息接口
    parameters:
      - name: page
        in: path
        type: integer
        description: 第几页
      - name: per_page
        in: path
        type: integer
        description: 每页多少个
      - name: username
        in: path
        type: string
        description: 用户账号 模糊匹配
      - name: name
        in: path
        type: string
        description: 用户名字 模糊匹配
      - name: department_id
        in: path
        type: integer
        description: 部门id 
      - name: member_since
        in: path
        type: string
        description: 用户创建时间升序(不写) 降序descending 
    responses:
      200:
        description: 
    """
    page = request.args.get('page', 1, type=int)
    per_page = min(
        request.args.get('per_page',
                         current_app.config['USERS_PER_PAGE'],
                         type=int), 100)
    username = request.args.get('username')
    name = request.args.get('name')
    department_id = request.args.get('department_id')
    member_since = request.args.get('member_since')
    query = User.query
    if username and name:
        query = query.filter(User.username.like("%" + username + "%"),\
                            User.name.like("%" + name + "%"))
    elif not username and name:
        query = query.filter(User.name.like("%" + name + "%"))
    elif username and not name:
        query = query.filter(User.username.like("%" + username + "%"))
    if department_id:
        query = query.filter(User.department_id == department_id)

    if member_since == 'descending':
        query = query.order_by(User.member_since.desc())

    data = User.to_collection_dict(query, page, per_page, \
            'api.get_users', username=username, name=name, \
                department_id=department_id, member_since=member_since)
    return ResMsg(data=data).data