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
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
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