コード例 #1
0
def post(request, post):
    """ Create and edit Blog Posts 
    
    Args
        post: Blog post that is being edited
    
    GET Method
    Display an empty form when adding a new post. 
    Display a filled in form when editing an existing post.
    
    POST Method
    When submiting an existing post or creating a new post. 
    
    """
    form = PostForm(instance=post,
                    initial={'draft': post and post.published == datetime.datetime.max})

    edit = post != None
    if request.method == 'POST':
        if form.validate(request.form):
            post = form.save()
            if form.data['draft']:
                post.published= datetime.datetime.max
                post.put()
            else:
                if not post.path:
                    post.published = datetime.datetime.now()
                post.publish()
            return render_to_response("blog/admin/published.html", 
                                     {'config': config, 'post':post,
                                      'draft': form.data['draft'],
                                      'edit': edit,} )

    template_vals = {'config': config,
                     'form': form.as_widget(),
                     'edit': edit,
                     'menu_new': not edit, }        
    return render_to_response('blog/admin/edit.html',  
                             template_vals)