async def _get_items(self): index_s = (self.__current_page - 1) * self.__items_per_page if self.__use_pipeline: pipelines = [] if self.__query_params: pipelines.append(MatchStage(self.__query_params)) if self.__stages: pipelines.extend(self.__stages) if self.__sort: sort_stage = SortStage(self.__sort) pipelines.append(sort_stage) skip_stage = SkipStage(index_s if index_s >= 0 else 0) pipelines.append(skip_stage) limit_stage = LimitStage(self.__items_per_page) pipelines.append(limit_stage) if self.__left_stages: pipelines.extend(self.__left_stages) return await self.__document.aggregate(pipelines).to_list(self.__items_per_page) else: return await self.__document.find(self.__query_params).skip(index_s).limit(self.__items_per_page).sort( self.__sort).to_list(self.__items_per_page)
async def post(self): res = {'code': 1} pageNum = int(self.get_argument('pageNum', 1)) size = int(self.get_argument('size', 10)) skip = (pageNum - 1) * size if (pageNum - 1) * size > 0 else 0 filter_dict = {'member_cid': self.current_user.cid, 'record_flag': 1} match = MatchStage(filter_dict) lookup = LookupStage(Present, local_field='present_cid', foreign_field='cid', as_list_name='present') skip = SkipStage(skip) sort = SortStage([('updated_dt', DESC)]) limit = LimitStage(int(size)) coupon_list = await DiscountCoupon.aggregate( [match, lookup, skip, sort, limit]).to_list(None) if coupon_list: html = self.render_string('wechat/integral/coupon_data_list.html', coupon_list=coupon_list) else: html = '' res['html'] = html res['current_length'] = len(coupon_list) res['totalSize'] = await DiscountCoupon.count(filter_dict) return res
async def post(self): r_dict = {'code': 0} try: pageNum = int(self.get_i_argument('pageNum', 1)) size = int(self.get_i_argument('size', 10)) skip = (pageNum - 1) * size if (pageNum - 1) * size > 0 else 0 filter_dict = {'db_mark': {'$ne': ''}, 'release_time': {'$ne': ''}} match = MatchStage(filter_dict) skip = SkipStage(skip) sort = SortStage([('release_time', DESC)]) limit = LimitStage(int(size)) count = await Tvs.count({ 'db_mark': { '$ne': '' }, 'release_time': { '$ne': '' } }) tvs = await Tvs.aggregate([match, sort, skip, limit]).to_list(None) new_tvs = [] for tv in tvs: new_tvs.append({ 'id': str(tv.id), 'name': tv.name, 'pic_url': tv.pic_url, 'db_mark': tv.db_mark, 'actor': tv.actor, 'source_nums': len(tv.download), 'release_time': tv.release_time.strftime('%Y-%m-%d'), 'label': api_utils.get_show_source_label(tv), 'recommend_info': '这部神剧值得一看。', 'set_num': tv.set_num if tv.set_num else '', 's_type': 'tv' }) r_dict['tvs'] = new_tvs r_dict['count'] = count r_dict['code'] = 1000 except Exception: logger.error(traceback.format_exc()) print('latest') print(r_dict) return r_dict
async def post(self): r_dict = {'code': 0} try: search_name = self.get_i_argument('search_name', None) member_cid = self.get_i_argument('member_cid', None) if not member_cid: r_dict['code'] = 1001 # member_cid为空 return r_dict if not search_name: r_dict['code'] = 1002 # 检索名称为空 return r_dict pageNum = int(self.get_i_argument('pageNum', 1)) size = int(self.get_i_argument('size', 20)) skip = (pageNum - 1) * size if (pageNum - 1) * size > 0 else 0 filter_dict = { 'db_mark': { '$ne': '' }, 'release_time': { '$ne': '' }, 'status': 1, 'name': { '$regex': '^%s' % search_name } } match = MatchStage(filter_dict) skip = SkipStage(skip) sort = SortStage([('db_mark', DESC)]) limit = LimitStage(int(size)) films = await Films.aggregate([match, sort, skip, limit]).to_list(None) sources = [] for film in films: sources.append(film.name) tvs = await Tvs.aggregate([match, sort, skip, limit]).to_list(None) for tv in tvs: sources.append(tv.name) r_dict['names'] = sources[:20] r_dict['code'] = 1000 except Exception: logger.error(traceback.format_exc()) return r_dict
async def _get_survey_url(open_id, survey_action_cid): if open_id and survey_action_cid: current_datetime = datetime.datetime.now() match = MatchStage({ '$and': [{ 'cid': survey_action_cid }, { 'push_datetime': { '$lte': current_datetime } }, { 'pull_types': { '$in': [PUSH_RECEIVE_WECHAT] } }, { '$or': [{ 'start_datetime': None }, { 'start_datetime': { '$lte': current_datetime } }] }, { '$or': [{ 'end_datetime': None }, { 'end_datetime': { '$gte': current_datetime } }] }] }) lookup = LookupStage(Questionnaire, 'q_cid', 'cid', 'q_docs') sort = SortStage([('push_datetime', DESC)]) limit = LimitStage(1) survey_action_list = await SurveyPushAction.aggregate( [match, lookup, sort, limit]).to_list(1) if survey_action_list: survey_action = survey_action_list[0] if survey_action: q_doc_list = survey_action.q_docs if q_doc_list: questionnaire = q_doc_list[0] if questionnaire: member = await Member.find_one( dict(open_id=open_id, status=STATUS_USER_ACTIVE)) if member: history_status_list = [ STATUS_MEMBER_SURVEY_NORMAL, STATUS_MEMBER_SURVEY_FILTERED, STATUS_MEMBER_SURVEY_QUOTA_FULLED ] history_count = await MemberSurveyHistory.count({ 'member_cid': member.cid, 'action_cid': survey_action_cid, 'status': { '$in': history_status_list } }) if history_count > 0: return '/wechat/operation/message/?message=%s' % '抱歉,您已经参与过本次调查,您可以点击服务号"我是车主>>最新问卷"参与其他活动。' else: survey_history = await MemberSurveyHistory.get_or_create( dict(member_cid=member.cid, action_cid=survey_action.cid)) survey_history.start_datetime = datetime.datetime.now( ) survey_history.status = STATUS_MEMBER_SURVEY_STARTED survey_history.needless = { 'sa_title': survey_action.title, 'sa_cover': survey_action.needless.get('cover_title') if survey_action.needless else None, 'q_cid': questionnaire.get('cid'), 'q_title': questionnaire.get('title') } await survey_history.save() return questionnaire.get( 'url') + '?code=%s&sid=%s' % ( member.code, survey_action_cid) return '/wechat/operation/message/?message=%s' % '错误!' return '/wechat/operation/message/?message=%s' % '亲,活动已结束啦,欢迎下次再来!'
async def post(self): r_dict = {'code': 0} try: search_name = self.get_i_argument('search_name', None) member_cid = self.get_i_argument('member_cid', None) s_type = self.get_i_argument('s_type', None) if not member_cid: r_dict['code'] = 1001 # member_cid为空 return r_dict if not search_name: r_dict['code'] = 1002 # 检索名称为空 return r_dict if not s_type: r_dict['code'] = 1003 # 资源类型为空 return r_dict pageNum = int(self.get_i_argument('pageNum', 1)) size = int(self.get_i_argument('size', 10)) skip = (pageNum - 1) * size if (pageNum - 1) * size > 0 else 0 filter_dict = { 'db_mark': { '$ne': '' }, 'release_time': { '$ne': '' }, 'status': 1, '$or': [ { 'name': { '$regex': search_name } }, { 'actor': { '$regex': search_name } }, { 'director': { '$regex': search_name } }, { 'label': { '$regex': search_name } }, ] } match = MatchStage(filter_dict) skip = SkipStage(skip) sort = SortStage([('db_mark', DESC)]) limit = LimitStage(int(size)) if s_type == 'film': films = await Films.aggregate([match, sort, skip, limit]).to_list(None) new_films = [] for film in films: new_films.append({ 'id': str(film.id), 'name': film.name, 'pic_url': film.pic_url, 'stage_photo': [k['img_url'] for k in film.stage_photo][0:4] if film.stage_photo else [], 's_type': 'film', 'label': api_utils.get_show_source_label(film), 'articulation': api_utils.get_show_source_articulation(film), 'db_mark': film.db_mark, 'actor': film.actor, 'source_nums': len(film.download), 'release_time': film.release_time.strftime('%Y-%m-%d'), 'recommend_info': film.recommend_info if film.recommend_info else '这部神片值得一看。' }) r_dict['sources'] = new_films elif s_type == 'tv': tvs = await Tvs.aggregate([match, sort, skip, limit]).to_list(None) new_tvs = [] for tv in tvs: new_tvs.append({ 'id': str(tv.id), 'name': tv.name, 'pic_url': tv.pic_url, 'stage_photo': [k['img_url'] for k in tv.stage_photo ][0:4] if tv.stage_photo else [], 's_type': 'tv', 'label': api_utils.get_show_source_label(tv), 'articulation': api_utils.get_show_source_articulation(tv), 'db_mark': tv.db_mark, 'actor': tv.actor, 'source_nums': len(tv.download), 'release_time': tv.release_time.strftime('%Y-%m-%d'), 'recommend_info': '这部神剧值得一看。' }) r_dict['sources'] = new_tvs r_dict['code'] = 1000 except Exception: logger.error(traceback.format_exc()) return r_dict
async def post(self): r_dict = {'code': 0} try: member_cid = self.get_i_argument('member_cid', None) pageNum = int(self.get_i_argument('pageNum', 1)) size = int(self.get_i_argument('size', 10)) skip = (pageNum - 1) * size if (pageNum - 1) * size > 0 else 0 if member_cid: member = await find_app_member_by_cid(member_cid) if not member: r_dict['code'] = 1002 # 没有匹配到用户 else: if not member.is_register: r_dict['code'] = 1003 # 用户未登陆不展示收藏列表 return r_dict filter_dict = { 'member_cid': member_cid, 'status': COLLECTION_STATUS_ACTIVE } match = MatchStage(filter_dict) skip = SkipStage(skip) sort = SortStage([('updated_dt', DESC)]) limit = LimitStage(int(size)) my_collect_list = await MyCollection.aggregate( [match, sort, skip, limit]).to_list(None) show_my_list = [] for my_collect in my_collect_list: if my_collect.s_type == 'film': film = await Films.find_one( {'_id': ObjectId(my_collect.source_id)}) show_my_list.append({ 'id': str(film.id), 'name': film.name, 'pic_url': film.pic_url, 's_type': 'film', 'db_mark': film.db_mark, 'actor': film.actor, 'source_nums': len(film.download), 'release_time': film.release_time.strftime('%Y-%m-%d'), 'recommend_info': film.recommend_info if film.recommend_info else '这部神片值得一看。', 'label': api_utils.get_show_source_label(film) }) elif my_collect.s_type == 'tv': tv = await Tvs.find_one( {'_id': ObjectId(my_collect.source_id)}) show_my_list.append({ 'id': str(tv.id), 'name': tv.name, 'pic_url': tv.pic_url, 's_type': 'tv', 'db_mark': tv.db_mark, 'actor': tv.actor, 'source_nums': len(tv.download), 'release_time': tv.release_time.strftime('%Y-%m-%d'), 'recommend_info': tv.recommend_info if tv.recommend_info else '这部神剧值得一看。', 'label': api_utils.get_show_source_label(tv), 'set_num': tv.set_num if tv.set_num else '' }) r_dict['my_collect_list'] = show_my_list r_dict['code'] = 1000 else: r_dict['code'] = 1001 # member_cid为空 except Exception: logger.error(traceback.format_exc()) print(r_dict) return r_dict
async def post(self): r_dict = {'code': 0} try: search_name = self.get_i_argument('search_name', None) member_cid = self.get_i_argument('member_cid', None) if not member_cid: r_dict['code'] = 1001 # member_cid为空 return r_dict if not search_name: r_dict['code'] = 1002 # 检索名称为空 return r_dict pageNum = int(self.get_i_argument('pageNum', 1)) size = int(self.get_i_argument('size', 10)) skip = (pageNum - 1) * size if (pageNum - 1) * size > 0 else 0 filter_dict = { 'db_mark': { '$ne': '' }, 'release_time': { '$ne': '' }, 'status': 1, '$or': [ { 'name': { '$regex': search_name } }, { 'actor': { '$regex': search_name } }, { 'director': { '$regex': search_name } }, { 'label': { '$regex': search_name } }, ] } match = MatchStage(filter_dict) skip = SkipStage(skip) sort = SortStage([('db_mark', DESC)]) limit = LimitStage(int(size)) films_count = await Films.count(filter_dict) films = await Films.aggregate([match, sort, skip, limit]).to_list(None) new_films = [] for film in films: new_films.append({ 'id': str(film.id), 'name': film.name, 'pic_url': film.pic_url, 's_type': 'film', 'stage_photo': [k['img_url'] for k in film.stage_photo ][0:4] if film.stage_photo else [] }) r_dict['films'] = new_films r_dict['films_count'] = films_count tvs_count = await Tvs.count(filter_dict) tvs = await Tvs.aggregate([match, sort, skip, limit]).to_list(None) new_tvs = [] for tv in tvs: new_tvs.append({ 'id': str(tv.id), 'name': tv.name, 'pic_url': tv.pic_url, 's_type': 'tv', 'stage_photo': [k['img_url'] for k in tv.stage_photo][0:4] if tv.stage_photo else [] }) r_dict['tvs'] = new_tvs r_dict['tvs_count'] = tvs_count r_dict['code'] = 1000 except Exception: logger.error(traceback.format_exc()) return r_dict
async def post(self): r_dict = {'code': 0} try: pageNum = int(self.get_i_argument('pageNum', 1)) size = int(self.get_i_argument('size', 10)) search_type = self.get_i_argument('search_type', 'all') skip = (pageNum - 1) * size if (pageNum - 1) * size > 0 else 0 filter_dict = {'db_mark': {'$ne': ''}, 'release_time': {'$ne': ''}} dif_time = 0 if search_type == 'week': dif_time = 7 elif search_type == 'month': dif_time = 30 elif search_type == 'year': dif_time = 365 if dif_time: show_time = datetime.datetime.now().replace( hour=0, minute=0, second=0, microsecond=0) - datetime.timedelta(days=dif_time) filter_dict = { 'db_mark': { '$ne': '' }, 'release_time': { '$ne': '', '$gte': show_time } } match = MatchStage(filter_dict) skip = SkipStage(skip) sort = SortStage([('db_mark', DESC)]) limit = LimitStage(int(size)) count = await Films.count({ 'db_mark': { '$ne': '' }, 'release_time': { '$ne': '' } }) films = await Films.aggregate([match, sort, skip, limit]).to_list(None) new_films = [] for film in films: # if len(film.label) > 0: # label = film.label[0:3] # else: # label = [] new_films.append({ 'id': str(film.id), 'name': film.name, 'pic_url': film.pic_url, 'db_mark': film.db_mark, 'actor': film.actor, 'source_nums': len(film.download), 'release_time': film.release_time.strftime('%Y-%m-%d'), # 'recommend_info': '这部神片值得一看。', 'recommend_info': film.recommend_info if film.recommend_info else '这部神片值得一看。', # 'label': label 'label': api_utils.get_show_source_label(film), 's_type': 'film' }) r_dict['films'] = new_films r_dict['count'] = count r_dict['code'] = 1000 except Exception: logger.error(traceback.format_exc()) print('score') print(r_dict) return r_dict
async def post(self): r_dict = {'code': 0} try: pageNum = int(self.get_i_argument('pageNum', 1)) size = int(self.get_i_argument('size', 10)) skip = (pageNum - 1) * size if (pageNum - 1) * size > 0 else 0 filter_dict = {'db_mark': {'$ne': ''}, 'release_time': {'$ne': ''}} match = MatchStage(filter_dict) skip = SkipStage(skip) sort = SortStage([('release_time', DESC)]) limit = LimitStage(int(size)) count = await Films.count({ 'db_mark': { '$ne': '' }, 'release_time': { '$ne': '' } }) films = await Films.aggregate([match, sort, skip, limit]).to_list(None) new_films = [] for film in films: # if len(film.label) > 0: # label = film.label[0:3] # else: # label = [] new_films.append({ 'id': str(film.id), 'name': film.name, 'pic_url': film.pic_url, 'db_mark': film.db_mark, 'actor': film.actor, 'source_nums': len(film.download), 'release_time': film.release_time.strftime('%Y-%m-%d'), # 'recommend_info': '这部神片值得一看。', 'recommend_info': film.recommend_info if film.recommend_info else '这部神片值得一看。', # 'label': label 'label': api_utils.get_show_source_label(film), 's_type': 'film' }) r_dict['films'] = new_films r_dict['count'] = count r_dict['code'] = 1000 except Exception: logger.error(traceback.format_exc()) print('latest') print(r_dict) return r_dict