示例#1
0
文件: post.py 项目: henter/PBB
    def post(self,postid):
        md = self.get_argument('markdown')
        time_now = int(time())
        user = self.current_user
        postid = int(postid)
        content = md_convert(md,notice=True,time=time_now,user=user['username'],db=self.db,postid=postid)
        post = self.db.posts.find_one({'_id':postid})
        source = self.parse_user_agent()

        comment_reversed = reversed(post['comments'])
        for _ in range(min(len(post['comments']),5)):#look up in the recently 5 comment
            comment = comment_reversed.next()
            if comment['author'] == user['username'] and comment['content'] == content:#Reply has already been posted.
                self.redirect('/topics/'+str(postid))
                return

        post['comments'].append({'author':user['username'],
                                 'content':content,
                                 'posttime':time_now,
                                 })
        post['changedtime'] = time_now
        if source:
            post['comments'][-1]['source'] = source
        self.db.posts.save(post)
        try:
            del self.mc['index']
        except KeyError:
            pass
        try:
            cache = self.mc[str(postid)]
        except KeyError:
            pass
        else:
            for i in range(len(post['comments'])):
                post['comments'][i]['location'] =  str(i+1)
            cache[2] = self.render_string('modules/comments.html',db=self.db,time_span=time_span,post=post)
            self.mc[str(postid)] = cache

        self.redirect('/topics/'+str(postid))
        url = '%s/topics/%s#reply-%s' % (self.application.settings['forum_url'],postid,len(post['comments']))
        if user['twitter_bind'] and self.get_argument('twitter-sync') == 'yes':
            for i in set(html_killer.findall(content)):
                content = content.replace(i,'')#不知道为什么,直接用sub返回的是空字符串。
            for i in set(username_finder.findall(content)):
                u = self.db.users.find_one({'username':i})
                if u and 'twitter' in u:
                    content = content.replace(u'@'+i,u' @'+user['twitter'])
            self.twitter_request(
                '/statuses/update',
                post_args={'status': u'%s %s' % (content,url)},
                access_token=user['access_token'],callback=self._on_post)
        ping(self.application.settings['forum_title_e'],self.application.settings['forum_url'],url)
示例#2
0
文件: auth.py 项目: henter/PBB
 def post(self):
     user = self.current_user
     for x in ('location','twitter','github','css','words'):
         user[x] = xhtml_unescape(self.get_argument(x,''))
         for x in set(html_killer.findall(user[x])):
             user[x] = user[x].replace(x,'')
     website = self.get_argument('website','')
     w = urlparse(website)
     if w[0] and w[1]:
         user['website'] = website
     else:
         user['website'] = ''
     self.db.users.save(user)
     self.redirect('/user/%s' % user['username'] )