예제 #1
0
파일: views.py 프로젝트: malerba118/tumblr
def post_create_view(request, slug):
    """
    Renders view to create a new post.
    :param request: http request
    :param slug: slug of blog to append post to.
    :return: rendered post creation form(GET) or redirect to post's associated blog(POST).
    If user does not own blog then 403's.
    """
    blog = get_object_or_404(Blog, slug=slug)
    if blog.isOwnedBy(request.user):
        post_form = PostCreateForm(request.POST or None)
        if request.method == "POST":
            if post_form.is_valid():
                post = post_form.save(commit=False)
                post.blog = blog
                post.root = None
                post.save()
                post.root = post
                post.tags = Tag.find_or_create_tags(post_form.data["tags_field"])
                post.save()
                Activity.create_activity(blog, post, POST)
                return redirect(blog.get_absolute_url())
        context = {"post_form":post_form}
        context.update(csrf(request))
        return render(request, "post_create.html", context)
    return HttpResponseForbidden()
예제 #2
0
파일: views.py 프로젝트: malerba118/tumblr
def reblog_post(request, post_id):
    """
    Renders view for rebloging a post.
    :param request: http request
    :param post_id: id of post to be rebloged
    :return: rendered post creation form populated with post instance(belonging to post_id)
    """
    post = get_object_or_404(Post, pk=post_id)
    if request.method == "POST":
        form = PostCreateForm(request.POST)
        if form.is_valid():
            new_post = form.save(commit=False)
            new_post.root = post.root
            new_post.blog = request.user.blog
            if post.is_root():
                if blockquotify(post.blog, post) == new_post.content:
                    pass #if user has not changed content, do not blockquotify
                else:
                    new_post.content = blockquotify(request.user.blog, new_post)
            else:
                if new_post.content != post.content: #if user has not changed content, do not blockquotify
                    new_post.content =  blockquotify(request.user.blog, new_post)
            new_post.save()##must persist prior to setting tags field
            new_post.tags = Tag.find_or_create_tags(form.data["tags_field"])
            new_post.save()
            Activity.create_activity(request.user.blog, new_post, REBLOG)
            return redirect(request.user.blog.get_absolute_url())
    form = PostCreateForm()
    form.fields["title"].initial = post.title
    if post.is_root():#if post is a root post blockquotify before post creation form is rendered
        form.fields["content"].initial = blockquotify(post.blog, post)
    else:
        form.fields["content"].initial = post.content
    context = {"post_form": form}
    context.update(csrf(request))
    return render(request, "post_create.html", context)