コード例 #1
0
def adm_get_posts():

    page = int(request.argget.all('page', 1))
    pre = int(request.argget.all('pre', 10))
    sort = json_to_pyseq(request.argget.all('sort'))
    status = request.argget.all('status', 'is_issued')
    matching_rec = request.argget.all('matching_rec')
    time_range = int(request.argget.all('time_range', 0))
    keyword = request.argget.all('keyword', '').strip()
    fields = json_to_pyseq(request.argget.all('fields'))
    unwanted_fields = json_to_pyseq(request.argget.all('unwanted_fields'))

    # 不能同时使用fields 和 unwanted_fields
    temp_field = {}
    if fields:
        for f in fields:
            temp_field[f] = 1
    elif unwanted_fields:
        for f in unwanted_fields:
            temp_field[f] = 0

    data = get_posts_pr(field=temp_field,
                        page=page,
                        pre=pre,
                        sort=sort,
                        status=status,
                        time_range=time_range,
                        matching_rec=matching_rec,
                        keyword=keyword,
                        is_admin=True)

    return data
コード例 #2
0
ファイル: post.py プロジェクト: zealxiaowei/osroom
def get_posts():

    page = str_to_num(request.argget.all('page', 1))
    pre = str_to_num(request.argget.all('pre', get_config("post", "NUM_PAGE")))
    sort = json_to_pyseq(request.argget.all('sort'))
    status = request.argget.all('status', 'is_issued')
    matching_rec = request.argget.all('matching_rec')
    time_range = int(request.argget.all('time_range', 0))
    keyword = request.argget.all('keyword', '').strip()
    fields = json_to_pyseq(request.argget.all('fields'))
    unwanted_fields = json_to_pyseq(request.argget.all('unwanted_fields'))
    user_id = request.argget.all('user_id')
    category_id = request.argget.all('category_id')
    tag = request.argget.all('tag')

    # 不能同时使用fields 和 unwanted_fields
    temp_field = {}
    if fields:
        for f in fields:
            temp_field[f] = 1
    elif unwanted_fields:
        for f in unwanted_fields:
            temp_field[f] = 0

    other_filter = {}
    if user_id:
        # 获取指定用户的post
        other_filter["user_id"] = user_id

    # 如果category_id为None, 则获取全部分类文章
    if category_id:

        try:
            ObjectId(category_id)
            # 指定分类
            other_filter["category"] = category_id
        except BaseException:
            # 默认文集
            other_filter["category"] = None

    if tag:
        other_filter["tags"] = tag
    data = get_posts_pr(page=page,
                        field=temp_field,
                        pre=pre,
                        sort=sort,
                        status=status,
                        time_range=time_range,
                        matching_rec=matching_rec,
                        keyword=keyword,
                        other_filter=other_filter)
    return data
コード例 #3
0
ファイル: search.py プロジェクト: txf626/osroom
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