def create_thread(request, forum_slug): """ Builds and displays the form for a new thread, and processes that form. """ forum = get_object_or_404(Forum, slug=forum_slug, site=settings.SITE_ID) if request.method == 'POST': form = ThreadForm(request.POST) if form.is_valid(): # Sets the forum and creator of the thread, which aren't part of the form form.instance.forum = forum form.instance.creator = request.user thread = form.save(commit=False) # Uses an inline formset in order to create the thread and its first post using the same form post_formset = PostInlineFormSet(request.POST, instance=thread) if post_formset.is_valid(): for form in post_formset.forms: # Sets the author of the post form.instance.author = request.user thread.save() post_formset.save() messages.success(request, "Your thread <em>%s</em> was created." % thread.title) return redirect(thread.get_absolute_url()) else: form = ThreadForm() post_formset = PostInlineFormSet(instance=Thread()) return render(request, 'forums/thread_form.html', { 'form': form, 'post_formset': post_formset, 'forum': forum })
def post_thread(request, board): if not request.user.is_authenticated(): return HttpResponseRedirect('/accounts/login/?next=%s' % request.path) board = get_object_or_404(Category, pk=board) if not (board in request.user.profile.group.allowed_post.all()): return HttpResponseRedirect(reverse('board_view', args=(board.id,))) if request.method == 'POST': form = ThreadForm(request.POST) if form.is_valid(): if form.cleaned_data['category_id'] != board.id: raise PermissionDenied thread = Thread(creator = request.user, category = board, subject = form.cleaned_data['subject']) thread.save() post = Post(user = request.user, thread = thread, text = form.cleaned_data['text']) post.save() return HttpResponseRedirect(reverse('thread-page_view', args=(thread.id,1))) else: form = ThreadForm({'category_id':board.id}) return render_to_response('forums/post_thread.html',{'form':form,'board':board}, context_instance=RequestContext(request))
def post_create(request, forum_id): member = request.user forum = get_object_or_404(Forum, id=forum_id) if forum.closed: messages.error(request, "This forum is closed.") return HttpResponseRedirect(reverse("forums_forum", args=[forum.id])) can_create_thread = request.user.has_perm("forums.add_forumthread", obj=forum) if not can_create_thread: messages.error(request, "You do not have permission to create a thread.") return HttpResponseRedirect(reverse("forums_forum", args=[forum.id])) if request.method == "POST": form = ThreadForm(request.POST) if form.is_valid(): thread = form.save(commit=False) thread.forum = forum thread.author = request.user thread.save() # subscribe the poster to the thread if requested (default value is True) if form.cleaned_data["subscribe"]: thread.subscribe(thread.author, "email") # all users are automatically subscribed to onsite thread.subscribe(thread.author, "onsite") return HttpResponseRedirect(reverse("forums_thread", args=[thread.id])) else: form = ThreadForm() return render_to_response("forums/post_create.html", { "form": form, "member": member, "forum": forum }, context_instance=RequestContext(request))
def post_create(request, forum_id): member = request.user.profile forum = get_object_or_404(Forum, id=forum_id) if forum.closed: messages.error(request, "This forum is closed.") return HttpResponseRedirect(reverse("forums_forum", args=[forum.id])) can_create_thread = request.user.has_perm("forums.add_forumthread", obj=forum) if not can_create_thread: messages.error(request, "You do not have permission to create a thread.") return HttpResponseRedirect(reverse("forums_forum", args=[forum.id])) if request.method == "POST": form = ThreadForm(request.POST) if form.is_valid(): thread = form.save(commit=False) thread.forum = forum thread.author = request.user thread.save() # subscribe the poster to the thread if requested (default value is True) if form.cleaned_data["subscribe"]: thread.subscribe(thread.author, "email") # all users are automatically subscribed to onsite thread.subscribe(thread.author, "onsite") return HttpResponseRedirect( reverse("forums_thread", args=[thread.id])) else: form = ThreadForm() return render_to_response("forums/post_create.html", { "form": form, "member": member, "forum": forum }, context_instance=RequestContext(request))