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()
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)