Beispiel #1
0
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
    })
Beispiel #2
0
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))
Beispiel #3
0
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))
Beispiel #4
0
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))