From 781f24c515d8afcd6cd92bd9d60babc566f8269f Mon Sep 17 00:00:00 2001 From: Nicholas Johnson Date: Wed, 7 Oct 2009 12:19:44 +0100 Subject: [PATCH] Added post editing functionality. --- admin.py | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/admin.py b/admin.py index 41f7bf9..abc462c 100644 --- a/admin.py +++ b/admin.py @@ -71,6 +71,18 @@ class Meta: exclude = [ 'path', 'published', 'updated' ] +def with_post(fun): + def decorate(self, post_id=None): + post = None + if post_id: + post = BlogPost.get_by_id(int(post_id)) + if not post: + self.error(404) + return + fun(self, post) + return decorate + + class PostHandler(webapp.RequestHandler): def render_to_response(self, template_name, template_vals=None, theme=None): template_name = os.path.join("admin", template_name) @@ -80,11 +92,13 @@ def render_to_response(self, template_name, template_vals=None, theme=None): def render_form(self, form): self.render_to_response("edit.html", {'form': form}) - def get(self): - self.render_form(PostForm()) + @with_post + def get(self, post): + self.render_form(PostForm(instance=post)) - def post(self): - form = PostForm(data=self.request.POST) + @with_post + def post(self, post): + form = PostForm(data=self.request.POST, instance=post) if form.is_valid(): post = form.save(commit=False) post.publish() @@ -95,6 +109,7 @@ def post(self): application = webapp.WSGIApplication([ ('/admin/newpost', PostHandler), + ('/admin/post/(\d+)', PostHandler), ])