Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
    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()
Exemplo n.º 5
0
    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
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
    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