Пример #1
0
    def post(self, id=''):
        act = self.get_argument("act", '')
        if act == 'findid':
            eid = self.get_argument("id", '')
            self.redirect('%s/admin/comment/%s' % (BASE_URL, eid))
            return

        tf = {'true': 1, 'false': 0}
        post_dic = {
            'author':
            self.get_argument("author"),
            'email':
            self.get_argument("email"),
            'content':
            safe_encode(self.get_argument("content").replace('\r', '\n')),
            'url':
            self.get_argument("url", ''),
            'visible':
            self.get_argument("visible", 'false'),
            'id':
            id
        }
        post_dic['visible'] = tf[post_dic['visible'].lower()]

        Comment.update_comment_edit(post_dic)
        clear_cache_by_pathlist(['post:%s' % id])
        self.redirect('%s/admin/comment/%s' % (BASE_URL, id))
        return
Пример #2
0
def tran_content(text, code = False):
    if code:
        codetag = '[mycodeplace]'
        codes = CODE_RE.findall(text)
        for i in range(len(codes)):
            text = text.replace(codes[i],codetag)
        text = text.replace("[code]","").replace("[/code]","")
        
        text = n2br(text)
        
        a = text.split(codetag)
        b = []
        for i in range(len(a)):
            b.append(a[i])
            try:
                b.append('<pre><code>' + safe_encode(codes[i]) + '</code></pre>')
            except:
                pass
                        
        return ''.join(b)
    else:
        return n2br(text)
Пример #3
0
    def post(self, id = ''):
        act = self.get_argument("act",'')
        if act == 'findid':
            eid = self.get_argument("id",'')
            self.redirect('%s/admin/comment/%s'% (BASE_URL, eid))
            return

        tf = {'true':1,'false':0}
        post_dic = {
            'author': self.get_argument("author"),
            'email': self.get_argument("email"),
            'content': safe_encode(self.get_argument("content").replace('\r','\n')),
            'url': self.get_argument("url",''),
            'visible': self.get_argument("visible",'false'),
            'id': id
        }
        post_dic['visible'] = tf[post_dic['visible'].lower()]

        Comment.update_comment_edit(post_dic)
        clear_cache_by_pathlist(['post:%s'%id])
        self.redirect('%s/admin/comment/%s'% (BASE_URL, id))
        return
Пример #4
0
def tran_content(text, code = False):
    if code:
        codetag = '[mycodeplace]'
        codes = CODE_RE.findall(text)
        for i in range(len(codes)):
            text = text.replace(codes[i],codetag)
        text = text.replace("[code]","").replace("[/code]","")
        
        text = n2br(text)
        
        a = text.split(codetag)
        b = []
        for i in range(len(a)):
            b.append(a[i])
            try:
                b.append('<pre><code>' + safe_encode(codes[i]) + '</code></pre>')
            except:
                pass
                        
        return ''.join(b)
    else:
        return n2br(text)
Пример #5
0
    def post(self, id=""):
        act = self.get_argument("act", "")
        if act == "findid":
            eid = self.get_argument("id", "")
            self.redirect("%s/admin/comment/%s" % (BASE_URL, eid))
            return

        tf = {"true": 1, "false": 0}
        post_dic = {
            "author": self.get_argument("author"),
            "email": self.get_argument("email"),
            "content": safe_encode(self.get_argument("content").replace("\r", "\n")),
            "url": self.get_argument("url", ""),
            "visible": self.get_argument("visible", "false"),
            "id": id,
        }
        post_dic["visible"] = tf[post_dic["visible"].lower()]

        Comment.update_comment_edit(post_dic)
        clear_cache_by_pathlist(["post:%s" % id])
        self.redirect("%s/admin/comment/%s" % (BASE_URL, id))
        return
Пример #6
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))
Пример #7
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))