コード例 #1
0
ファイル: views.py プロジェクト: mrfuxi/gae-blog
    def post(self, request, slug=None, *args, **kwargs):
        if not users.is_current_user_admin():
            return HttpResponseForbidden()

        post = self.get_object()
        if not post and slug:
            raise Http404()

        form = PostForm(request.POST)
        if not form.validate():
            error_msg = [
                "There are problems with the form:",
            ]
            error_msg = itertools.chain(error_msg, *form.errors.values())

            return HttpResponseBadRequest("<br/>".join(error_msg))

        # title has to exit at that point due to the validators
        new_slug = slugify(form.data["title"])
        if slug is None and Post.get_by_slug(new_slug):
            return HttpResponseBadRequest("Post with this title alread exit")

        created = False
        if not post:
            created = True
            post = Post()

        form.populate_obj(post)
        post.author = users.get_current_user().nickname()
        post.put()

        context = self.get_context_data(post=post, short=created)
        return self.render_to_response(context)
コード例 #2
0
ファイル: main.py プロジェクト: yablochkin/homepage
def add():
    form = PostForm(request.form)
    if request.method == "POST" and form.validate():
        post = Post(title=form.title.data, slug=form.slug.data, content=form.content.data)
        post.put()
        return redirect(post.get_url())
    return render_template("form.html", form=form, section="add")
コード例 #3
0
ファイル: main.py プロジェクト: yablochkin/homepage
def edit(post_id):
    post = Post.get_by_id(post_id)
    form = PostForm(request.form, obj=post)
    if request.method == "POST" and form.validate():
        form.populate_obj(post)
        post.put()
        return redirect(post.get_url())
    return render_template("form.html", form=form)
コード例 #4
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)