Exemplo n.º 1
0
    def post(self, id='', title=''):
        action = self.get_argument("act")

        if action == 'inputpw':
            wrn = self.get_cookie("wrpw", '0')
            if int(wrn) >= 10:
                self.write('403')
                return

            pw = self.get_argument("pw", '')
            pobj = Article.get_article_by_id_simple(id)
            wr = False
            if pw:
                if pobj.password == pw:
                    self.set_cookie("rp%s" % id,
                                    pobj.password,
                                    path="/",
                                    expires_days=1)
                else:
                    wr = True
            else:
                wr = True
            if wr:
                wrn = self.get_cookie("wrpw", '0')
                self.set_cookie("wrpw",
                                str(int(wrn) + 1),
                                path="/",
                                expires_days=1)

            self.redirect('%s/topic/%d/%s' % (BASE_URL, pobj.id, pobj.title))
            return

        self.set_header('Content-Type', 'application/json')
        rspd = {'status': 201, 'msg': 'ok'}

        if action == 'readmorecomment':
            fromid = self.get_argument("fromid", '')
            allnum = int(self.get_argument("allnum", 0))
            showednum = int(
                self.get_argument("showednum", EACH_PAGE_COMMENT_NUM))
            if fromid:
                rspd['status'] = 200
                if (allnum - showednum) >= EACH_PAGE_COMMENT_NUM:
                    limit = EACH_PAGE_COMMENT_NUM
                else:
                    limit = allnum - showednum
                cobjs = Comment.get_post_page_comments_by_id(id, fromid, limit)
                rspd['commentstr'] = self.render('comments.html',
                                                 {'cobjs': cobjs})
                rspd['lavenum'] = allnum - showednum - limit
                self.write(json.dumps(rspd))
            return

        #
        usercomnum = self.get_cookie('usercomnum', '0')
        if int(usercomnum) > MAX_COMMENT_NUM_A_DAY:
            rspd = {'status': 403, 'msg': '403: Forbidden'}
            self.write(json.dumps(rspd))
            return

        try:
            timestamp = int(time())
            post_dic = {
                'author':
                self.get_argument("author"),
                'email':
                self.get_argument("email"),
                'content':
                safe_encode(self.get_argument("con").replace('\r', '\n')),
                'url':
                self.get_argument("url", ''),
                'postid':
                self.get_argument("postid"),
                'add_time':
                timestamp,
                'toid':
                self.get_argument("toid", ''),
                'visible':
                COMMENT_DEFAULT_VISIBLE
            }
        except:
            rspd['status'] = 500
            rspd['msg'] = '错误: 注意必填的三项'
            self.write(json.dumps(rspd))
            return

        pobj = Article.get_article_by_id_simple(id)
        if pobj and not pobj.closecomment:
            cobjid = Comment.add_new_comment(post_dic)
            if cobjid:
                Article.update_post_comment(pobj.comment_num + 1, id)
                rspd['status'] = 200
                #rspd['msg'] = '恭喜: 已成功提交评论'

                rspd['msg'] = self.render(
                    'comment.html', {
                        'cobjid':
                        cobjid,
                        'gravatar':
                        'http://www.gravatar.com/avatar/%s' %
                        md5(post_dic['email']).hexdigest(),
                        'url':
                        post_dic['url'],
                        'author':
                        post_dic['author'],
                        'visible':
                        post_dic['visible'],
                        'content':
                        post_dic['content'],
                    })

                clear_cache_by_pathlist(['/', 'post:%s' % id])
                #send mail
                if not debug:
                    try:
                        if NOTICE_MAIL:
                            tolist = [NOTICE_MAIL]
                        else:
                            tolist = []
                        if post_dic['toid']:
                            tcomment = Comment.get_comment_by_id(toid)
                            if tcomment and tcomment.email:
                                tolist.append(tcomment.email)
                        commenturl = "%s/t/%s#r%s" % (BASE_URL, str(
                            pobj.id), str(cobjid))
                        m_subject = u'有人回复您在 《%s》 里的评论 %s' % (pobj.title,
                                                              str(cobjid))
                        m_html = u'这是一封提醒邮件(请勿直接回复): %s ,请尽快处理: %s' % (
                            m_subject, commenturl)

                        if tolist:
                            import sae.mail
                            sae.mail.send_mail(
                                ','.join(tolist), m_subject, m_html,
                                (MAIL_SMTP, int(MAIL_PORT), MAIL_FROM,
                                 MAIL_PASSWORD, True))

                    except:
                        pass
            else:
                rspd['msg'] = '错误: 未知错误'
        else:
            rspd['msg'] = '错误: 未知错误'
        self.write(json.dumps(rspd))
Exemplo n.º 2
0
 def post(self, id = '', title = ''):
     action = self.get_argument("act")
     
     if action == 'inputpw':
         wrn = self.get_cookie("wrpw", '0')
         if int(wrn)>=10:
             self.write('403')
             return
         
         pw = self.get_argument("pw",'')
         pobj = Article.get_article_by_id_simple(id)
         wr = False
         if pw:             
             if pobj.password == pw:
                 self.set_cookie("rp%s" % id, pobj.password, path = "/", expires_days =1)
             else:
                 wr = True
         else:
             wr = True
         if wr:
             wrn = self.get_cookie("wrpw", '0')
             self.set_cookie("wrpw", str(int(wrn)+1), path = "/", expires_days = 1 )
         
         self.redirect('%s/topic/%d/%s'% (BASE_URL, pobj.id, pobj.title))
         return
     
     self.set_header('Content-Type','application/json')
     rspd = {'status': 201, 'msg':'ok'}
     
     if action == 'readmorecomment':
         fromid = self.get_argument("fromid",'')
         allnum = int(self.get_argument("allnum",0))
         showednum = int(self.get_argument("showednum", EACH_PAGE_COMMENT_NUM))
         if fromid:
             rspd['status'] = 200
             if (allnum - showednum) >= EACH_PAGE_COMMENT_NUM:
                 limit = EACH_PAGE_COMMENT_NUM
             else:
                 limit = allnum - showednum
             cobjs = Comment.get_post_page_comments_by_id( id, fromid, limit )
             rspd['commentstr'] = self.render('comments.html', {'cobjs': cobjs})
             rspd['lavenum'] = allnum - showednum - limit
             self.write(json.dumps(rspd))
         return
     
     #
     usercomnum = self.get_cookie('usercomnum','0')
     if int(usercomnum) > MAX_COMMENT_NUM_A_DAY:
         rspd = {'status': 403, 'msg':'403: Forbidden'}
         self.write(json.dumps(rspd))
         return
     
     try:
         timestamp = int(time())
         post_dic = {
             'author': self.get_argument("author"),
             'email': self.get_argument("email"),
             'content': safe_encode(self.get_argument("con").replace('\r','\n')),
             'url': self.get_argument("url",''),
             'postid': self.get_argument("postid"),
             'add_time': timestamp,
             'toid': self.get_argument("toid",''),
             'visible': COMMENT_DEFAULT_VISIBLE
         }
     except:
         rspd['status'] = 500
         rspd['msg'] = '错误: 注意必填的三项'
         self.write(json.dumps(rspd))
         return
     
     pobj = Article.get_article_by_id_simple(id)
     if pobj and not pobj.closecomment:
         cobjid = Comment.add_new_comment(post_dic)
         if cobjid:
             Article.update_post_comment( pobj.comment_num+1, id)
             rspd['status'] = 200
             #rspd['msg'] = '恭喜: 已成功提交评论'
             
             rspd['msg'] = self.render('comment.html', {
                     'cobjid': cobjid,
                     'gravatar': 'http://www.gravatar.com/avatar/%s'%md5(post_dic['email']).hexdigest(),
                     'url': post_dic['url'],
                     'author': post_dic['author'],
                     'visible': post_dic['visible'],
                     'content': post_dic['content'],
                 })
             
             clear_cache_by_pathlist(['/','post:%s'%id])
             #send mail
             if not debug:
                 try:
                     if NOTICE_MAIL:
                         tolist = [NOTICE_MAIL]
                     else:
                         tolist = []
                     if post_dic['toid']:
                         tcomment = Comment.get_comment_by_id(toid)
                         if tcomment and tcomment.email:
                             tolist.append(tcomment.email)
                     commenturl = "%s/t/%s#r%s" % (BASE_URL, str(pobj.id), str(cobjid))
                     m_subject = u'有人回复您在 《%s》 里的评论 %s' % ( pobj.title,str(cobjid))
                     m_html = u'这是一封提醒邮件(请勿直接回复): %s ,请尽快处理: %s' % (m_subject, commenturl)
                     
                     if tolist:
                         import sae.mail
                         sae.mail.send_mail(','.join(tolist), m_subject, m_html,(MAIL_SMTP, int(MAIL_PORT), MAIL_FROM, MAIL_PASSWORD, True))          
                     
                 except:
                     pass
         else:
             rspd['msg'] = '错误: 未知错误'
     else:
         rspd['msg'] = '错误: 未知错误'
     self.write(json.dumps(rspd))
Exemplo n.º 3
0
    def post(self, id = '', title = ''):
        action = self.get_argument("act")

        if action == 'inputpw':
            wrn = self.get_cookie("wrpw", '0')
            if int(wrn)>=10:
                self.write('403')
                return

            pw = self.get_argument("pw",'')
            pobj = Article.get_article_by_id_simple(id)
            if MYSQL_TO_KVDB_SUPPORT:
                psw = pobj['password']
                pobjid = pobj['id']
                pobjtitle = pobj['title']
            else:
                psw = pobj.password
                pobjid = pobj.id
                pobjtitle = pobj.title
            wr = False
            if pw:
                if psw == pw:
                    clear_cache_by_pathlist(['post:%s'%id])#yobin 20120630
                    self.set_cookie("rp%s" % id, psw, path = "/", expires_days =1)
                else:
                    wr = True
            else:
                wr = True
            if wr:
                wrn = self.get_cookie("wrpw", '0')
                self.set_cookie("wrpw", str(int(wrn)+1), path = "/", expires_days = 1 )
            self.redirect('%s/topic/%d/%s'% (BASE_URL, pobjid, pobjtitle))
            return

        self.set_header('Content-Type','application/json')
        rspd = {'status': 201, 'msg':'ok'}

        if action == 'readmorecomment':
            fromid = self.get_argument("fromid",'')
            allnum = int(self.get_argument("allnum",0))
            showednum = int(self.get_argument("showednum", EACH_PAGE_COMMENT_NUM))
            if fromid:
                rspd['status'] = 200
                if (allnum - showednum) >= EACH_PAGE_COMMENT_NUM:
                    limit = EACH_PAGE_COMMENT_NUM
                else:
                    limit = allnum - showednum
                cobjs = Comment.get_post_page_comments_by_id( id, int(fromid), limit )
                rspd['commentstr'] = self.render('comments.html', {'cobjs': cobjs})
                rspd['lavenum'] = allnum - showednum - limit
                self.write(json.dumps(rspd))
            return

        #
        usercomnum = self.get_cookie('usercomnum','0')
        if int(usercomnum) > MAX_COMMENT_NUM_A_DAY:
            rspd = {'status': 403, 'msg':'403: Forbidden'}
            self.write(json.dumps(rspd))
            return

        try:
            timestamp = int(time())
            post_dic = {
                'author': self.get_argument("author"),
                'email': self.get_argument("email",''),
                'content': safe_encode(self.get_argument("con").replace('\r','\n')),
                'url': self.get_argument("url",''),
                'postid': self.get_argument("postid"),
                'add_time': timestamp,
                'toid': self.get_argument("toid",''),
                'visible': COMMENT_DEFAULT_VISIBLE
            }
        except:
            rspd['status'] = 500
            rspd['msg'] = '错误: 注意必填的三项'
            self.write(json.dumps(rspd))
            return

        pobj = Article.get_article_by_id_simple(id)
        if MYSQL_TO_KVDB_SUPPORT:
            pclosecomment = pobj['closecomment']
            pcomment_num  = int(pobj['comment_num'])
            pobjid        = pobj['id']
            pobjtitle     = pobj['title']
        else:
            pclosecomment = pobj.closecomment
            pcomment_num  = pobj.comment_num
            pobjid        = pobj.id
            pobjtitle     = pobj.title

        try:
            pclosecomment = int(pclosecomment)
        except Exception , e:
            print 'PostDetail, pclosecomment=',pclosecomment,e
Exemplo n.º 4
0
    def post(self, id='', title=''):
        action = self.get_argument("act")

        if action == 'inputpw':
            wrn = self.get_cookie("wrpw", '0')
            if int(wrn) >= 10:
                self.write('403')
                return

            pw = self.get_argument("pw", '')
            pobj = Article.get_article_by_id_simple(id)
            if MYSQL_TO_KVDB_SUPPORT:
                psw = pobj['password']
                pobjid = pobj['id']
                pobjtitle = pobj['title']
            else:
                psw = pobj.password
                pobjid = pobj.id
                pobjtitle = pobj.title
            wr = False
            if pw:
                if psw == pw:
                    clear_cache_by_pathlist(['post:%s' % id])  #yobin 20120630
                    self.set_cookie("rp%s" % id, psw, path="/", expires_days=1)
                else:
                    wr = True
            else:
                wr = True
            if wr:
                wrn = self.get_cookie("wrpw", '0')
                self.set_cookie("wrpw",
                                str(int(wrn) + 1),
                                path="/",
                                expires_days=1)
            self.redirect('%s/topic/%d/%s' % (BASE_URL, pobjid, pobjtitle))
            return

        self.set_header('Content-Type', 'application/json')
        rspd = {'status': 201, 'msg': 'ok'}

        if action == 'readmorecomment':
            fromid = self.get_argument("fromid", '')
            allnum = int(self.get_argument("allnum", 0))
            showednum = int(
                self.get_argument("showednum", EACH_PAGE_COMMENT_NUM))
            if fromid:
                rspd['status'] = 200
                if (allnum - showednum) >= EACH_PAGE_COMMENT_NUM:
                    limit = EACH_PAGE_COMMENT_NUM
                else:
                    limit = allnum - showednum
                cobjs = Comment.get_post_page_comments_by_id(
                    id, int(fromid), limit)
                rspd['commentstr'] = self.render('comments.html',
                                                 {'cobjs': cobjs})
                rspd['lavenum'] = allnum - showednum - limit
                self.write(json.dumps(rspd))
            return

        #
        usercomnum = self.get_cookie('usercomnum', '0')
        if int(usercomnum) > MAX_COMMENT_NUM_A_DAY:
            rspd = {'status': 403, 'msg': '403: Forbidden'}
            self.write(json.dumps(rspd))
            return

        try:
            timestamp = int(time())
            post_dic = {
                'author':
                self.get_argument("author"),
                'email':
                self.get_argument("email", ''),
                'content':
                safe_encode(self.get_argument("con").replace('\r', '\n')),
                'url':
                self.get_argument("url", ''),
                'postid':
                self.get_argument("postid"),
                'add_time':
                timestamp,
                'toid':
                self.get_argument("toid", ''),
                'visible':
                COMMENT_DEFAULT_VISIBLE
            }
        except:
            rspd['status'] = 500
            rspd['msg'] = '错误: 注意必填的三项'
            self.write(json.dumps(rspd))
            return

        pobj = Article.get_article_by_id_simple(id)
        if MYSQL_TO_KVDB_SUPPORT:
            pclosecomment = pobj['closecomment']
            pcomment_num = int(pobj['comment_num'])
            pobjid = pobj['id']
            pobjtitle = pobj['title']
        else:
            pclosecomment = pobj.closecomment
            pcomment_num = pobj.comment_num
            pobjid = pobj.id
            pobjtitle = pobj.title

        try:
            pclosecomment = int(pclosecomment)
        except Exception, e:
            print 'PostDetail, pclosecomment=', pclosecomment, e