Example #1
0
    def post(self):
        paster = users.get_current_user()
        name    = self.request.get('name').strip() or "Untitled"
        content = self.request.get('content').strip()
        private = self.request.get('private').strip()

        if name and content and bool(paster):
            u = Pasty(Name = name, Content = content, User = paster, Private = bool(private))
            u.put()
            
            # Update Memcache
            
            # First update the recent posts
            if not bool(private):
                recent = memcache.get('recent')
                if recent:
                    recent.insert(0, u)
                    if len(recent) > 10:
                        recent.pop()
                    memcache.set('recent', recent)

            # Now update the post memcache
            memcache.set("pasty:%s" % (str(u.key().id())), u)
            self.redirect('/pasty/%s' % u.key().id())
        
        else:
            self.redirect(users.create_login_url(self.request.uri))
Example #2
0
    def edit_pasty_post(self, id):
        paster  = users.get_current_user()
        name    = self.request.get('name').strip() or "Untitled"
        content = self.request.get('content').strip()

        if name and content:
            u = Pasty.get_by_id(int(id))
            u2 = memcache.get("pasty:%s" % id)
            
            if u:
                if u.User == paster:
                    u.Name = name
                    u.Content = content
                    u.put()
                    if u2:
                        u2.Name = name
                        u2.Content = content
                        memcache.set("pasty:"+id, u2)
                    self.redirect('/pasty/%s' % id)
                else:
                    self.error('403')
            else:
                self.error('404')
        else:
            self.redirect('/pasty/edit_pasty/'+id)
Example #3
0
    def edit_pasty_post(self, id):
        paster  = users.get_current_user()
        name    = self.request.get('name').strip() or "Untitled"
        content = self.request.get('content').strip()

        if name and content:
            u = Pasty.get_by_id(int(id))
            if u:
                if u.User == paster:
                    # if the title is changed
                    # we need to rebild 'recent'
                    if u.Name != name:
                        memcache.delete('recent')
                        u.Name = name

                    u.Content = content
                    u.put()
                    memcache.set("pasty:"+id, u)
                    self.redirect('/pasty/%s' % id)
                else:
                    self.error('403')
            else:
                self.error('404')
        else:
            self.redirect('/pasty/edit_pasty/'+id)
Example #4
0
 def delete_pasty(self, id):
     u = Pasty.get_by_id(int(id))
     if u:
         memcache.delete('pasty:'+ id)
         memcache.delete('recent')
         logging.debug("Deleting 'recent' from memcache.")
         memcache.delete('comments:'+ id)
         db.delete(u)
         self.redirect('/')
     else:
         self.error('404')
Example #5
0
    def edit_pasty(self, id):
        paster  = users.get_current_user()
        u = memcache.get("pasty:%s" % id)
        if not u:
            u = Pasty.get_by_id(int(id))
            if not u:
                self.error('404')

        if paster == u.User:
            self.render('edit_pasty.html', pasty=u)
        else:
            self.error('403')
Example #6
0
    def get(self, id):
        paster = users.get_current_user()
        u = memcache.get("pasty:%s" % id)
        if not u:
            u = Pasty.get_by_id(int(id))
            if u == None:
                self.error(404);
            else:
                memcache.set("pasty:%s" % (str(u.key().id())), u)

        is_owner = (u.User == paster)
        u2 = memcache.get("comments:%s" % id)
        if u2 is None:
            u2 = db.GqlQuery("SELECT * FROM Comment WHERE PostId=:1 ORDER BY Created", id)
            u2 = u2.fetch(None)
            if not memcache.add("comments:" + id, u2):
                logging.error('Memcache set failed, while trying to add comments:' + id)

        self.render("view_pasty.html", pasty=u, is_owner=is_owner, logged_in=bool(paster),
                        comments=reversed(u2), paster=paster)