def post(self): uid = self.get_current_user() #当前用户没有登录 if not uid: self.return_json({'msg': ErrorMessage.error_message['037'], 'code': 'error', 'num': '037'}, finish=True) return #提交频率限制 if not rateLimited('PublicNewsfeed', uid, 2): self.return_json_by_num('039', finish=True) content = self.get_argument('content', '') if not content: self.return_json({'msg': ErrorMessage.error_message['052'], 'code': 'error', 'num': '052'}, finish=True) return news_feed = UserNewsfeed() #检查非法字符 filter_obj = DictFilter() content, bad_words = filter_obj.match_all(content) #过滤html content = dr.sub('', content) #获取图片url newsfeed_img_urls = self.get_argument('newsfeed_img_urls', '') coordinate = self.get_argument('coordinate', '') isopen = self.get_argument('isopen', 1) #活动 activity_ids = self.get_argument('newsfeed_activity_ids', 0) item = { 'content': content, 'coordinate': coordinate, 'is_open': isopen, 'urls': newsfeed_img_urls, 'uid': uid['id'], 'activity_ids': activity_ids } ua = self.request.headers["User-Agent"] ip = '123.121.72.84'#self.request.remote_ip news_feed_res = yield news_feed.addContent(item, self.settings['uploads_path'], ua_string=ua, ip=ip) if news_feed_res: content = '<span class="feed-content">' + news_feed.showContent(content, activity_ids.split(',')) + '</span>' if news_feed_res[1].has_key('img_paths'): content = content + '<div class="feed-list-img">' for item in news_feed_res[1]['img_paths']: content = content + '''<a class='imgZoom' href='javascript:;' data-href='/ucenter/feedimg/%s' data-width='%s' data-height='%s'> <img src='/ucenter/feedimg/%s' style='max-width:150px; max-height:100px;'/> </a>''' % (item['file'], item['width'], item['height'], item['file']) del item content = content + '</div>' self.return_json({'res': {'content':content, 'from_source':news_feed_res[1]['from_source'], 'coordinate':news_feed_res[1]['coordinate'], 'create_time': utiles.timeBefore(news_feed_res[1]['create_time']), }, 'code': 'success'}, finish=True) return
def post(self): user_info = self.get_current_user() if not user_info: self.return_json({'msg': ErrorMessage.error_message['037'], 'code': 'error', 'num': '037', 'is_need_cpatcha': 0}, finish=True) return uid = str(user_info['id']) pid = self.get_argument('pid', 0) ancestor_id = self.get_argument('ancestor_id', 0) comment = filterTags(self.get_argument('comment', '')) feedback_id = self.get_argument('feedback_id', 0) if not comment: self.return_json({'msg': ErrorMessage.error_message['035'], 'code': 'error', 'num': '035'}, finish=True) return if not feedback_id: self.return_json({'msg': ErrorMessage.error_message['036'], 'code': 'error', 'num': '036'}, finish=True) return #频率控制 tmp = delayPostLimit('feedback-reply', uid, 0.5) if not tmp: self.return_json({'msg': ErrorMessage.error_message['043'], 'code': 'error', 'num': '043'}, finish=True) return #查询评论的信息 comment_info = self.f_c.getItem(pid) if not comment_info: self.return_json({'msg': ErrorMessage.error_message['036'], 'code': 'error', 'num': '036'}, finish=True) return create_timestamp = time.time() create_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(create_timestamp)) res, new_comment = self.f_c.addComment(self.settings, uid, pid, ancestor_id, comment, feedback_id, create_time, comment_info['uid'], type='feedback_comment') if not res: self.return_json({'msg': ErrorMessage.error_message['038'], 'code': 'error', 'num': '038'}, finish=True) return #获取被评论的用户姓名 user = User() to_user_info = user.getItem(comment_info['uid']) res_data = { 'fcid': res, 'user_name': user_info['user_name'], 'create_time': utiles.timeBefore(create_time), 'avatar': user_info['avatar'], 'uid': user_info['id'], 'comment': new_comment, 'p_comment_id': pid, 'to_user_id': comment_info['uid'], 'to_user_name': to_user_info['user_name'] if to_user_info else '' } self.return_json({'code': 'success', 'msg': SuccessMessage.success_message['006'], 'res': res_data}, finish=True) return
def getComentsAndReplies(self, fid, page, limit): #获取评论总数 comment_total = self.feedback_comment.getFeedbackCommentCountByFid(fid) #获取评论 comments = self.feedback_comment.getFeedbackCommentsByFid(fid, page, limit) user_ids = [] comment_ids = [] for (k, v) in comments.items(): user_ids.append(v['uid']) comment_ids.append(v['id']) #获取评论的回复列表 reply_list = self.feedback_comment.getSonFeedbackCommentByAncestorId(comment_ids, 1, 100) for (k, v) in reply_list.items(): for i in v: user_ids.append(i['uid']) user_ids.append(i['to_uid']) #评论者集合 user_infos = self.user.getUsersByUids(user_ids) for (key, item) in comments.items(): item['commenter'] = user_infos[item['uid']] if user_infos[item['uid']] else {'user_name':''} item['create_time'] = utiles.timeBefore(item['create_time']) temp_reply_list = reply_list.get(item['id'], []) temp_new_reply_list = [] for i in temp_reply_list: i['commenter'] = user_infos[item['uid']] if user_infos[item['uid']] else {'user_name':''} i['create_time'] = utiles.timeBefore(i['create_time']) i['to_user_name'] = user_infos[item['to_uid']]['user_name'] if item['to_uid']!=0 and user_infos[item['to_uid']] else '' i['to_user_id'] = item['to_uid'] temp_new_reply_list.append(i) item['reply_list'] = temp_new_reply_list del temp_new_reply_list, temp_reply_list comments[key] = item return comment_total, comments
def get(self, id): if not id: self.render_404() #更新查看总数 self.feedback.updateFeedbackCount(id, 'views') uid = self.get_current_user(info=False) page = self.get_argument('page', 1) limit = options.page_limit['feedback_limit'] _handler_template = 'feedback/feedback_info.html' feedback_info = self.feedback.getFeedbackById(id) if not feedback_info: return self.render_404() feedback_info['tags'] = self.feedback_tag.getTagListByIds(feedback_info['tag_ids'].split(',')) feedback_info['user_info'] = self.user.getItem(feedback_info['uid']) feedback_info['publish_time'] = utiles.timeBefore(feedback_info['create_time']) self._context.feedback_info = feedback_info comment_total, comments = self.getComentsAndReplies(feedback_info['id'], page, limit) self._context.comment_total = str(comment_total['total']) self._context.comments = comments #判断是否显示‘查看更多’ show_more = None if comment_total['total']>limit: show_more = True self._context.show_more = show_more self._context.show_more_url = '/feedback/info/%d' % int(id) self._context.page = page self._context.relay_click_time = options.relay_click_time self._context.r = time.time() if checkNeedCaptcha(FEEDBACK_COMMENT_KEY, uid): self._context.is_need_captcha = 1 else: self._context.is_need_captcha = None self.render(_handler_template) self.finish()
def getNewsFeedList(self, uid, page, order=['create_time', 'DESC']): if not uid: return None list = self.queryMany(filterString=[('uid', int(uid)), ('status', 1)], fields=self._table_columns, orderBy=[(order[0], order[1])], limit=self._page_size, pageNo=page) img_ids = [] #存储图片id for item in list: if item['imgs'] and item['imgs'] != '0': for i in item['imgs'].split(','): img_ids.append(i) img_dict = {} if img_ids: feed_img = UserNewsfeedImgs() img_list = feed_img.getImgsById(img_ids) for img in img_list: img_dict.setdefault(img['feed_id'], []) img_dict[img['feed_id']].append(img) res = [] for item in list: item['create_time'] = utiles.timeBefore(item['create_time']) #通过标签展示内容 item['content'] = self.showContent(item['content'], item['activity_ids'].split(',')) if img_dict.has_key(item['id']): img_item_tmp = [] for tmp in img_dict[item['id']]: tmp['ext_info'] = json.loads(tmp['ext_info']) img_item_tmp.append(tmp) item['img_urls'] = img_item_tmp del img_item_tmp else: item['img_urls'] = None item['is_open'] = self.is_open[int(item['is_open'])] res.append(item) return res
def get(self): _handler_template = 'feedback/index.html' sort_type = self.get_argument('sort', 'rank_sort') self._context.sort_type = sort_type page = self.get_argument('page', 1) limit = options.page_limit['feedback_limit'] #分页url page_url = 'feedback/' args_url = '' #是否有tag参数 tag = self.get_argument('tag', '') keyword = self.get_argument('keyword', '') self._context.keyword = keyword conds = {} if tag: page_url += '&tag='+tag if page_url.find('?')>=0 else '?tag='+tag args_url += '&tag='+tag conds['tag'] = tag if keyword: if page_url.find('?')>=0: page_url += '&keyword='+keyword else: page_url += '?keyword='+keyword args_url += '&keyword='+keyword conds['keyword'] = keyword #传递请求url self._context.form_url = page_url self._context.args_url = args_url feedback = Feedback() feedback_total = feedback.getListTotal(conds) #分页 page_obj = Page(total_entries=int(feedback_total.total), entries_per_page=int(limit), current_page=page) page_obj.current_page(page) feedback_list = feedback.getList(conds=conds, sorting=sort_type, page=page_obj.current_page(), limit=limit) page_str = page_obj.getPageStr('/feedback') self._context.page_str = page_str # (list, res, tag_ids, uids) = ([], [], [], []) for item in feedback_list: item['votes'] = item['oppose_votes']+item['approval_votes'] temp_tag_ids = item['tag_ids'].split(',') for t in temp_tag_ids: if t: tag_ids.append(t) uids.append(item['uid']) item['title'] = filterTags(utiles.cutStr(item['title']), True) item['tag_ids'] = temp_tag_ids list.append(item) feedback_tag = FeedbackTags() tag_list = feedback_tag.getTagListByIds(tag_ids) del tag_ids #获取用户 user = User() user_list = user.getUsersByUids(uids) for item in list: item['user_info'] = user_list[item['uid']] if user_list[item['uid']] else {'user_name':''} item.pop('uid') item['tags'] = [] for i in item['tag_ids']: if i and tag_list.has_key(int(i)): item['tags'].append(tag_list[int(i)]) item['create_time'] = utiles.timeBefore(item['create_time']) if item['views']>9999: item['views'] = '9999+' res.append(item) del list self._context.feedback_list = res self.render(_handler_template)
def post(self): user_info = self.get_current_user() if not user_info: self.return_json({'msg': ErrorMessage.error_message['037'], 'code': 'error', 'num': '037', 'is_need_cpatcha': 0}, finish=True) return uid = str(user_info['id']) pid = self.get_argument('pid', 0) ancestor_id = self.get_argument('ancestor_id', 0) comment = filterTags(self.get_argument('editor_comment', '')) feedback_id = self.get_argument('feedback_id', 0) create_timestamp = time.time() create_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(create_timestamp)) captcha = self.get_argument('captcha', '') #验证验证码次数和频率 is_need_captcha, cache_count, cache_time, is_frequency, is_true_need_captcha = limitCaptcha(uid, 'feedback_comment') if not comment: self.return_json({'msg': ErrorMessage.error_message['035'], 'code': 'error', 'num': '035', 'is_need_captcha': is_need_captcha}, finish=True) return if not feedback_id: self.return_json({'msg': ErrorMessage.error_message['036'], 'code': 'error', 'num': '036', 'is_need_captcha': is_need_captcha}, finish=True) return #通过feedback_id查询反馈信息 f_info = self.f.getItem(feedback_id) if not f_info: self.return_json({'msg': ErrorMessage.error_message['036'], 'code': 'error', 'num': '036', 'is_need_captcha': is_need_captcha}, finish=True) return #验证验证码是否正确 if is_true_need_captcha==1: if not captcha: self.return_json({'msg': ErrorMessage.error_message['033'], 'code': 'error', 'num': '033', 'is_need_captcha': is_need_captcha}, finish=True) return else: #判断是否频繁操作 if is_frequency==1 and captcha!=self.session['captcha']: self.return_json({'msg': ErrorMessage.error_message['039'], 'code': 'error', 'num': '039', 'is_need_captcha': is_need_captcha}, finish=True) return if captcha!=self.session['captcha']: self.return_json({'msg': ErrorMessage.error_message['034'], 'code': 'error', 'num': '034', 'is_need_captcha': is_need_captcha}, finish=True) return res, new_comment = self.f_c.addComment(self.settings, uid, pid, ancestor_id, comment, feedback_id, create_time, f_info['uid']) if not res: self.return_json({'msg': ErrorMessage.error_message['038'], 'code': 'error', 'num': '038', 'is_need_captcha': is_need_captcha}, finish=True) return # res_data = { 'fcid': res, 'user_name': user_info['user_name'], 'create_time': utiles.timeBefore(create_time), 'avatar': user_info['avatar'], 'uid': user_info['id'], 'comment': new_comment } self.return_json({'code': 'success', 'msg': SuccessMessage.success_message['006'], 'res': res_data, 'is_need_captcha': is_need_captcha}, finish=True) return