def get_user_all_info(**kwargs):
    """
    获取用户全部信息, 密码除外
    注意, 函数中不要写默认参数,使用kwargs, 方便更新用户数据时清理缓存
    :param user_id:
    :param is_basic: 默认False, 为Ture时只返回最基础的数据
    :param determine_following:判断当前登录用户是否有关注该用户, 前提是is_basic参数为False
    :return:
    """

    user_id = kwargs.get("user_id")
    is_basic = kwargs.get("is_basic", 0)
    determine_following = kwargs.get("determine_following", True)

    user = mdb_user.db.user.find_one({"_id": ObjectId(user_id)},
                                     {"password": 0})
    if not user:
        return False, gettext("The specified user is not found")
    else:
        user["_id"] = str(user["_id"])
        user["avatar_url"]["url"] = get_avatar_url(user["avatar_url"])
        if not is_basic:
            user["follow"] = get_user_follow_data(
                user["_id"], determine_following=determine_following)
            # 登录日志
            user["user_login_log"] = []
            user_login_log = mdb_user.db.user_login_log.find_one(
                {"user_id": user["_id"]}, {"user_id": 0})
            user["user_login_log"] = []
            if user_login_log:
                user_login_log["_id"] = str(user_login_log["_id"])
                user["user_login_log"] = user_login_log
        return True, user
def get_user_public_info(**kwargs):
    """
    获取用户公开信息
    注意, 函数中不要写默认参数,使用kwargs, 方便更新用户数据时清理缓存
    :param user_id:
    :param is_basic: 默认False, 为Ture时只返回最基础的数据
    :param determine_following:判断当前登录用户是否有关注该用户, 前提是is_basic参数为False
    :return:
    """
    user_id = kwargs.get("user_id")
    is_basic = kwargs.get("is_basic", 0)
    determine_following = kwargs.get("determine_following", True)
    user = mdb_user.db.user.find_one({"_id": ObjectId(user_id)}, {
        "username": 1,
        "custom_domain": 1,
        "avatar_url": 1,
        "introduction": 1,
        "gender": 1
    })
    if not user:
        return False, gettext("The specified user is not found")
    else:
        user["_id"] = str(user["_id"])
        user["custom_domain"] = str(user["custom_domain"])
        user["avatar_url"]["url"] = get_avatar_url(user["avatar_url"])
        if not is_basic:
            user["follow"] = get_user_follow_data(
                user["_id"], determine_following=determine_following)
        return True, user
Exemple #3
0
def users():
    '''
    Admin获取用户数据
    :return:
    '''
    data = {}
    status = request.argget.all('status')
    page = int(request.argget.all('page', 1))
    pre = int(request.argget.all('pre', 10))
    keyword = request.argget.all('keyword', '').strip()
    if status == "normal" or not status:
        status = "normal"
        query_conditions = {"is_delete": {"$in": [False, 0]}, "active": {"$in": [True, 1]}}
    elif status == "inactive":
        query_conditions = {"is_delete": {"$in": [False, 0]}, "active": {"$in": [False, 0]}}
    elif status == "cancelled":
        query_conditions = {"is_delete": {"$in": [True, 1]}}

    if keyword:
        keyword = {"$regex":keyword, "$options":"$i"}
        query_conditions["$or"] = [{"username": keyword},
                                   {"email": keyword},
                                   {"custom_domain": keyword}
                                   ]
    us = mdb_user.db.user.find(query_conditions, {"password": 0})
    data_cnt = us.count(True)
    users = list(us.sort([("create_at",-1)]).skip(pre * (page - 1)).limit(pre))
    roles = list(mdb_user.db.role.find({}))
    for user in users:
        user['_id'] = str(user['_id'])
        for role in roles:
            if ObjectId(user["role_id"]) == role["_id"]:
                user["role_name"] = role["name"]

        user_login_log = mdb_user.db.user_login_log.find_one({"user_id": user["_id"]}, {"user_id": 0})
        user["user_login_log"] = []
        if user_login_log:
            user_login_log["_id"] = str(user_login_log["_id"])
            user_login_log["login_info"] = sorted(user_login_log["login_info"],
                                                  key=lambda x:x["time"],
                                                  reverse=True)
            user["user_login_log"] = user_login_log

        user_op_log = mdb_user.db.user_op_log.find_one({'user_id': user["_id"]}, {"user_id": 0})
        user["user_op_log"] = []
        if user_op_log:
            user_op_log["_id"] = str(user_op_log["_id"])
            user_op_log["logs"] = sorted(user_op_log["logs"],
                                         key=lambda x:x["time"],
                                         reverse=True)
            user["user_op_log"] = user_op_log

        user["role_id"] = str(user["role_id"])
        user["avatar_url"]["url"] = get_avatar_url(user["avatar_url"])

    data["users"] = datas_paging(pre=pre, page_num=page, data_cnt=data_cnt, datas=users)
    data["status"] = status
    return data
Exemple #4
0
def search_process():
    '''
    搜索(暂不支持全文搜索)
    只能搜索文章, 用户
    :return:
    '''

    keyword = request.argget.all('keyword')
    target = request.argget.all('target')
    page = str_to_num(request.argget.all('page', 1))
    pre = str_to_num(request.argget.all('pre', 10))

    s, r = arg_verify(reqargs=[(gettext("keyword"), keyword)], required=True)
    if not s:
        return r

    data = {"posts":{}, "users":{}}
    # post
    if not target or target == "post":
        data["posts"] = {}
        data["posts"]["items"] = get_posts_pr(field={"title":1, "issue_time":1, "brief_content":1}, page=page, pre=pre, status="is_issued", sort=None, time_range=None,
                     matching_rec=None, keyword=keyword, other_filter=None, is_admin=False,
                             get_userinfo=False)["posts"]
        data["posts"]["kw"] = keyword

    if not target or target == "user":
        # user
        data["users"] = {"kw": keyword, "items": []}
        query_conditions = {"is_delete": {"$in": [False, 0]}, "active": {"$in": [True, 1]}}
        keyword = {"$regex":keyword, "$options":"$i"}
        query_conditions["$or"] = [{"username": keyword},
                                   {"email": keyword},
                                   {"custom_domain": keyword}
                                   ]
        us = mdb_user.db.user.find(query_conditions,
                                   {"_id": 1, "username":1, "avatar_url":1, "custom_domain":1,
                                    "gender":1, })

        data_cnt = us.count(True)
        users = list(us.skip(pre * (page - 1)).limit(pre))
        for user in users:
            user['_id'] = str(user['_id'])
            user["avatar_url"]["url"] = get_avatar_url(user["avatar_url"])

        data["users"]["items"] = datas_paging(pre=pre, page_num=page, data_cnt=data_cnt, datas=users)


    return data
Exemple #5
0
    def __init__(self, id, **kwargs):
        user_id = id
        super(User, self).__init__(**kwargs)
        user = get_one_user(user_id=str(user_id))
        if user:
            if "password" in user and user["password"]:
                self.no_password = False
                del user["password"]
            else:
                self.no_password = True

            self.id = ObjectId(user_id)
            self.str_id = str(user_id)
            self.username = user["username"]
            self.alias = user["alias"]
            self.email = user["email"]
            self.mphone_num = user["mphone_num"]
            self.custom_domain = user["custom_domain"]
            self.gender = user["gender"]
            self.avatar_url = get_avatar_url(user["avatar_url"])
            self.role_id = ObjectId(user["role_id"])
            self.active = user["active"]
            self.is_delete = user["is_delete"]
            self.create_at = user["create_at"]
            self.update_at = user["update_at"]
            self.editor = user["editor"]
            self.jwt_login_time = user.get("jwt_login_time", None)
            if not self.mphone_num:
                user_info_mphone_num = None
            else:
                temp_num = str(self.mphone_num)
                user_info_mphone_num = "{}****{}".format(
                    temp_num[0:3], temp_num[-5:-1]),
            self.user_info = {
                "username": self.username,
                "active": self.active,
                "is_delete": self.is_delete,
                "email": self.email,
                "mphone_num": user_info_mphone_num,
                "custom_domain": self.custom_domain,
                "avatar_url": self.avatar_url,
                "role_id": self.role_id,
                "id": self.id
            }
        else:
            return