def search_list(self, page=1, page_size=10, query_params={}, sort_params={},pager_flag=True): if sort_params == {}: sort_params.update({"add_time": -1}) coll = self.get_coll() if pager_flag: length = coll.find(query_params).count() pager = utils.count_page(length, page, page_size) cr = coll.aggregate([ {"$match": query_params}, {"$sort": sort_params}, {"$skip": pager['skip']}, {"$limit": pager['page_size']}]) else: pager = utils.count_page(0, page, page_size) cr = coll.aggregate([ {"$match": query_params}, {"$sort": sort_params}]) objs = [] for obj in cr: obj = utils.dump(obj) try: for extra_param in self.extra_params: exec("""obj[extra_param] = self.get_%s(obj)"""%extra_param) objs.append(obj) except: objs.append(obj) return objs, pager
def list(self,query_list,sort_list,use_pager=True,is_origin=False,page=1,page_size=options.page_size): length = self.get_coll().find(query_list).count() if use_pager: pager = utils.count_page(length,page,page_size) list = self.get_coll().aggregate([{"$match" : query_list}, {"$sort":sort_list}, {"$skip":pager['skip']}, {"$limit":pager['page_size']}]) else: pager = [] list = self.get_coll().aggregate([{"$match" : query_list}, {"$sort":sort_list} ]) if is_origin: return list,pager else: return utils.dump(list),pager
def nearby_donate(self, **kw): res = utils.init_response_data() try: env = request.env goods = env['odootask.task'].sudo().search_read( ["|", ("pay_state", "=", "yes"), ("state", "=", "done")]) goods.sort(key=lambda obj: obj["create_date"]) goods.reverse() more = kw.get("more", False) page = kw.get("page", 1) page_size = kw.get("page_size", 10) if more: length = len(goods) pager = utils.count_page(length, page, page_size) goods = goods[pager['skip']:pager['skip'] + pager['page_size']] else: pager = {} goods = goods[0:5] for good in goods: create_date = good["create_date"] create_date = str( datetime.datetime.strptime(create_date, "%Y-%m-%d %H:%M:%S") + datetime.timedelta(hours=8)).split(".")[0] date = create_date.split(" ")[0] time = create_date.split(" ")[1] curr_date = str(datetime.datetime.now()).split(" ")[0] if date == curr_date: show_date = "今天" else: show_date = date.split("-")[1] + "-" + date.split("-")[2] show_time = time.split(":")[0] + ":" + time.split(":")[1] good["create_date"] = create_date good["show_date"] = show_date good["show_time"] = show_time res["data"]["goods"] = goods res["pager"] = pager except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def more_good_types(self, **kw): res = utils.init_response_data() try: env = request.env more = kw.get("more", False) page = kw.get("page", 1) page_size = kw.get("page_size", 10) community_name = kw.get("community_name", "") if community_name != "": domain = [("community.name", "ilike", community_name)] else: domain = [] good_types = env['odootask.task_category'].sudo().search_read( domain) for good in good_types: del good["image"] del good["image_medium"] del good["image_small"] if len(good_types): good_types.sort(key=lambda obj: obj["donator_amount"]) good_types.reverse() if more: length = len(good_types) pager = utils.count_page(length, page, page_size) good_types = good_types[pager['skip']:pager['skip'] + pager['page_size']] res["data"]["good_types"] = good_types res["pager"] = pager else: res["data"]["good_types"] = [] res["pager"] = {} except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res