Ejemplo n.º 1
0
def thread_view(request, category_id, thread_id):
    category, thread = get_forum_ct(category_id, thread_id)
    forum = request.contest.forum

    context = {
        'forum': forum,
        'category': category,
        'thread': thread,
        'msgs': get_msgs(request),
        'post_set': thread.post_set.select_related('author').all(),
        'can_interact_with_users': can_interact_with_users(request),
        'can_interact_with_admins': can_interact_with_admins(request)
    }

    if can_interact_with_users(request):
        if request.method == "POST":
            form = PostForm(request, request.POST)
            if form.is_valid():
                instance = form.save(commit=False)
                instance.author = request.user
                instance.thread = thread
                instance.add_date = request.timestamp
                instance.save()
                return redirect('forum_thread',
                                contest_id=request.contest.id,
                                category_id=category.id,
                                thread_id=thread.id)
        else:
            form = PostForm(request)
        context['form'] = form

    return TemplateResponse(request, 'forum/thread.html', context)
Ejemplo n.º 2
0
def edit_post_view(request, category_id, thread_id, post_id):
    (category, thread, post) = get_forum_ctp(category_id, thread_id, post_id)
    is_admin = is_contest_admin(request)

    if not (post.author == request.user or is_admin):
        raise PermissionDenied

    if request.method == 'POST':
        form = PostForm(request, request.POST, instance=post)
        if form.is_valid():
            instance = form.save(commit=False)
            instance.approved = False
            instance.last_edit_date = request.timestamp
            instance.save()
            return redirect('forum_thread', contest_id=request.contest.id,
                            category_id=category.id,
                            thread_id=thread.id)
    else:
        form = PostForm(request, instance=post)

    return TemplateResponse(request, 'forum/edit_post.html', {
        'forum': request.contest.forum, 'category': category,
        'thread': thread, 'form': form, 'post': post,
        'msgs': get_msgs(request)
    })
Ejemplo n.º 3
0
def thread_view(request, category_id, thread_id):
    category, thread = get_forum_ct(category_id, thread_id)
    forum, lock = request.contest.forum, forum_is_locked(request)
    msgs = get_msgs(request)
    post_set = thread.post_set.select_related('author').all()
    if (request.user.is_authenticated() and not lock) or \
       is_contest_admin(request):
        if request.method == "POST":
            form = PostForm(request, request.POST)
            if form.is_valid():
                instance = form.save(commit=False)
                instance.author = request.user
                instance.thread = thread
                instance.add_date = request.timestamp
                instance.save()
                return redirect('forum_thread', contest_id=request.contest.id,
                                category_id=category.id,
                                thread_id=thread.id)
        else:
            form = PostForm(request)

        return TemplateResponse(request, 'forum/thread.html',
            {'forum': forum, 'category': category, 'thread': thread,
             'form': form, 'msgs': msgs, 'is_locked': lock,
             'post_set': post_set})
    else:
        return TemplateResponse(request, 'forum/thread.html',
            {'forum': forum, 'category': category, 'thread': thread,
             'msgs': msgs, 'is_locked': lock, 'post_set': post_set})
Ejemplo n.º 4
0
def thread_view(request, contest_id, category_id, thread_id):
    (forum, category, thread, lock) = get_forum_objects(request,
                                                  category_id, thread_id,
                                                  lock_required=True)
    msgs = get_msgs(forum, request)
    if (request.user.is_authenticated() and
       not request.contest.forum.is_locked(request.timestamp)) or \
       is_contest_admin(request):
        if request.method == "POST":
            form = PostForm(request, request.POST)
            if form.is_valid():
                instance = form.save(commit=False)
                instance.author = request.user
                instance.thread = thread
                instance.add_date = request.timestamp
                instance.save()
                return redirect('forum_thread', contest_id=contest_id,
                                category_id=category.id,
                                thread_id=thread.id)
        else:
            form = PostForm(request)

        return TemplateResponse(request, 'forum/thread.html',
            {'forum': forum, 'category': category, 'thread': thread,
             'form': form, 'msgs': msgs, 'is_locked': lock})
    else:
        return TemplateResponse(request, 'forum/thread.html',
            {'forum': forum, 'category': category, 'thread': thread,
             'msgs': msgs, 'is_locked': lock})
Ejemplo n.º 5
0
def thread_add_view(request, category_id):
    category = get_object_or_404(Category, id=category_id)
    msgs = get_msgs(request)
    if request.method == 'POST':
        form = NewThreadForm(request, request.POST)
        if form.is_valid():  # adding the new thread
            instance = form.save(commit=False)
            instance.category = category
            instance.save()
            post = PostForm(request, request.POST)
            if post.is_valid():  # adding the new post
                inst_post = post.save(commit=False)
                inst_post.author = request.user
                inst_post.thread = instance
                inst_post.add_date = request.timestamp
                inst_post.save()
                return redirect('forum_thread', contest_id=request.contest.id,
                                category_id=category.id,
                                thread_id=instance.id)
    else:
        form = NewThreadForm(request)

    return TemplateResponse(request, 'forum/thread_add.html',
        {'forum': request.contest.forum, 'category': category,
         'form': form, 'msgs': msgs})
Ejemplo n.º 6
0
def thread_add_view(request, category_id):
    category = get_object_or_404(Category, id=category_id)
    if request.method == 'POST':
        form = NewThreadForm(request, request.POST)
        if form.is_valid():  # adding the new thread
            instance = form.save(commit=False)
            instance.category = category
            instance.save()
            post = PostForm(request, request.POST)
            if post.is_valid():  # adding the new post
                inst_post = post.save(commit=False)
                inst_post.author = request.user
                inst_post.thread = instance
                inst_post.add_date = request.timestamp
                inst_post.save()
                return redirect('forum_thread',
                                contest_id=request.contest.id,
                                category_id=category.id,
                                thread_id=instance.id)
    else:
        form = NewThreadForm(request)

    return TemplateResponse(
        request, 'forum/thread_add.html', {
            'forum': request.contest.forum,
            'category': category,
            'form': form,
            'msgs': get_msgs(request)
        })
Ejemplo n.º 7
0
def category_view(request, contest_id, category_id):
    (forum, category, lock) = get_forum_objects(request, category_id,
                                           lock_required=True)
    msgs = get_msgs(forum, request)
    return TemplateResponse(request, 'forum/category.html',
        {'forum': forum, 'category': category, 'msgs': msgs,
         'is_locked': lock})
Ejemplo n.º 8
0
def thread_view(request, category_id, thread_id):
    category, thread = get_forum_ct(category_id, thread_id)
    forum, lock = request.contest.forum, forum_is_locked(request)
    msgs = get_msgs(request)
    post_set = thread.post_set.select_related('author').all()
    if (request.user.is_authenticated() and not lock) or \
       is_contest_admin(request):
        if request.method == "POST":
            form = PostForm(request, request.POST)
            if form.is_valid():
                instance = form.save(commit=False)
                instance.author = request.user
                instance.thread = thread
                instance.add_date = request.timestamp
                instance.save()
                return redirect('forum_thread', contest_id=request.contest.id,
                                category_id=category.id,
                                thread_id=thread.id)
        else:
            form = PostForm(request)

        return TemplateResponse(request, 'forum/thread.html',
            {'forum': forum, 'category': category, 'thread': thread,
             'form': form, 'msgs': msgs, 'is_locked': lock,
             'post_set': post_set})
    else:
        return TemplateResponse(request, 'forum/thread.html',
            {'forum': forum, 'category': category, 'thread': thread,
             'msgs': msgs, 'is_locked': lock, 'post_set': post_set})
Ejemplo n.º 9
0
def edit_post_view(request, category_id, thread_id, post_id):
    (category, thread, post) = get_forum_ctp(category_id, thread_id, post_id)
    is_admin = is_contest_admin(request)

    if not (post.author == request.user or is_admin):
        raise PermissionDenied

    if request.method == 'POST':
        form = PostForm(request, request.POST, instance=post)
        if form.is_valid():
            instance = form.save(commit=False)
            instance.approved = False
            instance.last_edit_date = request.timestamp
            instance.save()
            return redirect('forum_thread',
                            contest_id=request.contest.id,
                            category_id=category.id,
                            thread_id=thread.id)
    else:
        form = PostForm(request, instance=post)

    return TemplateResponse(
        request, 'forum/edit_post.html', {
            'forum': request.contest.forum,
            'category': category,
            'thread': thread,
            'form': form,
            'post': post,
            'msgs': get_msgs(request)
        })
Ejemplo n.º 10
0
def thread_view(request, category_id, thread_id):
    category, thread = get_forum_ct(category_id, thread_id)
    forum = request.contest.forum

    context = {'forum': forum,
               'category': category,
               'thread': thread,
               'msgs': get_msgs(request),
               'post_set': thread.post_set.select_related('author').all(),
               'can_interact_with_users': can_interact_with_users(request),
               'can_interact_with_admins': can_interact_with_admins(request)}

    if can_interact_with_users(request):
        if request.method == "POST":
            form = PostForm(request, request.POST)
            if form.is_valid():
                instance = form.save(commit=False)
                instance.author = request.user
                instance.thread = thread
                instance.add_date = request.timestamp
                instance.save()
                return redirect('forum_thread', contest_id=request.contest.id,
                                category_id=category.id,
                                thread_id=thread.id)
        else:
            form = PostForm(request)
        context['form'] = form

    return TemplateResponse(request, 'forum/thread.html', context)
Ejemplo n.º 11
0
def edit_post_view(request, contest_id, category_id, thread_id, post_id):
    (forum, cat, thread, post) = get_forum_objects(request, category_id,
                                                   thread_id, post_id)
    msgs = get_msgs(forum, request)
    is_admin = is_contest_admin(request)
    if post.author != request.user and not is_admin:
        raise PermissionDenied
    if request.method == 'POST':
        form = PostForm(request, request.POST, instance=post)
        if form.is_valid():
            instance = form.save(commit=False)
            instance.last_edit_date = request.timestamp
            instance.save()
            return redirect('forum_thread',
                            contest_id=contest_id,
                            category_id=cat.id,
                            thread_id=thread.id)
    else:
        form = PostForm(request, instance=post)

    return TemplateResponse(
        request, 'forum/edit_post.html', {
            'forum': forum,
            'category': cat,
            'thread': thread,
            'form': form,
            'post': post,
            'msgs': msgs
        })
Ejemplo n.º 12
0
def forum_view(request, contest_id):
    (forum, lock) = get_forum_objects(request, lock_required=True)
    msgs = get_msgs(forum, request)
    return TemplateResponse(request, 'forum/forum.html', {
        'forum': forum,
        'msgs': msgs,
        'is_locked': lock
    })
Ejemplo n.º 13
0
def forum_view(request):
    msgs = get_msgs(request)
    category_set = request.contest.forum.category_set \
        .prefetch_related('thread_set', 'thread_set__post_set') \
        .all()
    return TemplateResponse(request, 'forum/forum.html', {
        'forum': request.contest.forum, 'msgs': msgs,
        'is_locked': forum_is_locked(request), 'category_set': category_set
    })
Ejemplo n.º 14
0
def forum_view(request):
    msgs = get_msgs(request)
    category_set = request.contest.forum.category_set \
        .prefetch_related('thread_set', 'thread_set__post_set') \
        .all()
    return TemplateResponse(request, 'forum/forum.html', {
        'forum': request.contest.forum, 'msgs': msgs,
        'is_locked': forum_is_locked(request), 'category_set': category_set
    })
Ejemplo n.º 15
0
def category_view(request, contest_id, category_id):
    (forum, category, lock) = get_forum_objects(request,
                                                category_id,
                                                lock_required=True)
    msgs = get_msgs(forum, request)
    return TemplateResponse(request, 'forum/category.html', {
        'forum': forum,
        'category': category,
        'msgs': msgs,
        'is_locked': lock
    })
Ejemplo n.º 16
0
def category_view(request, category_id):
    category = get_object_or_404(Category, id=category_id)
    msgs = get_msgs(request)
    threads = category.thread_set \
        .prefetch_related('post_set') \
        .select_related('last_post', 'last_post__author') \
        .all()
    return TemplateResponse(request, 'forum/category.html',
        {'forum': request.contest.forum, 'category': category,
         'threads': threads, 'msgs': msgs,
         'is_locked': forum_is_locked(request)})
Ejemplo n.º 17
0
def category_view(request, category_id):
    category = get_object_or_404(Category, id=category_id)
    msgs = get_msgs(request)
    threads = category.thread_set \
        .prefetch_related('post_set') \
        .select_related('last_post', 'last_post__author') \
        .all()
    return TemplateResponse(request, 'forum/category.html',
        {'forum': request.contest.forum, 'category': category,
         'threads': threads, 'msgs': msgs,
         'is_locked': forum_is_locked(request)})
Ejemplo n.º 18
0
def forum_view(request):
    category_set = request.contest.forum.category_set \
        .prefetch_related('thread_set', 'thread_set__post_set') \
        .all()

    return TemplateResponse(request, 'forum/forum.html', {
        'forum': request.contest.forum, 'msgs': get_msgs(request),
        'can_interact_with_users': can_interact_with_users(request),
        'can_interact_with_admins': can_interact_with_admins(request),
        'is_locked': request.contest.forum.is_locked(),
        'category_set': category_set,
    })
Ejemplo n.º 19
0
def forum_view(request):
    category_set = request.contest.forum.category_set \
        .prefetch_related('thread_set', 'thread_set__post_set') \
        .all()

    return TemplateResponse(request, 'forum/forum.html', {
        'forum': request.contest.forum, 'msgs': get_msgs(request),
        'can_interact_with_users': can_interact_with_users(request),
        'can_interact_with_admins': can_interact_with_admins(request),
        'is_locked': request.contest.forum.is_locked(),
        'category_set': category_set,
    })
Ejemplo n.º 20
0
def category_view(request, category_id):
    category = get_object_or_404(Category, id=category_id)
    threads = category.thread_set \
        .prefetch_related('post_set') \
        .select_related('last_post', 'last_post__author') \
        .all()

    return TemplateResponse(request, 'forum/category.html', {
        'forum': request.contest.forum, 'category': category,
        'threads': threads, 'msgs': get_msgs(request),
        'can_interact_with_users': can_interact_with_users(request),
        'can_interact_with_admins': can_interact_with_admins(request)
    })
Ejemplo n.º 21
0
def category_view(request, category_id):
    category = get_object_or_404(Category, id=category_id)
    threads = category.thread_set \
        .prefetch_related('post_set') \
        .select_related('last_post', 'last_post__author') \
        .all()

    return TemplateResponse(request, 'forum/category.html', {
        'forum': request.contest.forum, 'category': category,
        'threads': threads, 'msgs': get_msgs(request),
        'can_interact_with_users': can_interact_with_users(request),
        'can_interact_with_admins': can_interact_with_admins(request)
    })
Ejemplo n.º 22
0
def ban_user_view(request, user_id):
    # Banning user blocks any user interaction with forum, while still
    # allowing viewing forum contents.

    forum = request.contest.forum

    if 'next' in request.GET:
        redirect_url = request.GET['next']
    else:
        redirect_url = reverse('forum',
                               kwargs={'contest_id': request.contest.id})

    user = get_object_or_404(User, id=user_id)
    if can_admin_contest(user, request.contest):
        messages.error(request, _("You can't ban an admin."))
        return redirect(redirect_url)

    if request.method == 'POST':
        form = BanForm(request.POST)
        if form.is_valid():
            instance = form.save(commit=False)
            instance.user = user
            instance.forum = request.contest.forum
            instance.admin = request.user
            instance.save()
            messages.success(request, _("Banned user: "******"Removed %d reports") % removed_reports_count)
            return redirect(redirect_url)
    else:
        form = BanForm()

    return TemplateResponse(
        request,
        'forum/ban_user.html',
        {
            'banned_user': user,
            'form': form,
            'next': redirect_url,
            'msgs': get_msgs(request),
        },
    )
Ejemplo n.º 23
0
def latest_posts_forum_view(request):
    posts = (Post.objects.filter(
        thread__category__forum=request.contest.forum.pk, ).prefetch_related(
            'thread').order_by('-add_date'))
    posts = annotate_posts_with_current_user_reactions(request, posts)

    context = {
        'forum': request.contest.forum,
        'msgs': get_msgs(request),
        'post_set': posts,
        'posts_per_page': settings.FORUM_PAGE_SIZE,
        'can_interact_with_users': can_interact_with_users(request),
        'can_interact_with_admins': can_interact_with_admins(request),
    }

    return TemplateResponse(request, 'forum/latest_posts.html', context)
Ejemplo n.º 24
0
def ban_user_view(request, user_id):
    # Banning user blocks any user interaction with forum, while still
    # allowing viewing forum contents.

    forum = request.contest.forum

    if 'next' in request.GET:
        redirect_url = request.GET['next']
    else:
        redirect_url = reverse('forum', kwargs={'contest_id': request.contest.id})

    user = get_object_or_404(User, id=user_id)
    if can_admin_contest(user, request.contest):
        messages.error(request, _("You can't ban an admin."))
        return redirect(redirect_url)

    if request.method == 'POST':
        form = BanForm(request.POST)
        if form.is_valid():
            instance = form.save(commit=False)
            instance.user = user
            instance.forum = request.contest.forum
            instance.admin = request.user
            instance.save()
            messages.success(request, _("Banned user: "******"Removed %d reports") %
                                 removed_reports_count)
            return redirect(redirect_url)
    else:
        form = BanForm()

    return TemplateResponse(request, 'forum/ban_user.html',
                            {'banned_user': user,
                             'form': form,
                             'next': redirect_url,
                             'msgs': get_msgs(request)})
Ejemplo n.º 25
0
def thread_view(request, contest_id, category_id, thread_id):
    (forum, category, thread, lock) = get_forum_objects(request,
                                                        category_id,
                                                        thread_id,
                                                        lock_required=True)
    msgs = get_msgs(forum, request)
    if (request.user.is_authenticated() and
       not request.contest.forum.is_locked(request.timestamp)) or \
       is_contest_admin(request):
        if request.method == "POST":
            form = PostForm(request, request.POST)
            if form.is_valid():
                instance = form.save(commit=False)
                instance.author = request.user
                instance.thread = thread
                instance.add_date = request.timestamp
                instance.save()
                return redirect('forum_thread',
                                contest_id=contest_id,
                                category_id=category.id,
                                thread_id=thread.id)
        else:
            form = PostForm(request)

        return TemplateResponse(
            request, 'forum/thread.html', {
                'forum': forum,
                'category': category,
                'thread': thread,
                'form': form,
                'msgs': msgs,
                'is_locked': lock
            })
    else:
        return TemplateResponse(
            request, 'forum/thread.html', {
                'forum': forum,
                'category': category,
                'thread': thread,
                'msgs': msgs,
                'is_locked': lock
            })
Ejemplo n.º 26
0
def edit_post_view(request, contest_id, category_id, thread_id, post_id):
    (forum, cat, thread, post) = get_forum_objects(request,
                                                   category_id, thread_id,
                                                   post_id)
    msgs = get_msgs(forum, request)
    is_admin = is_contest_admin(request)
    if post.author != request.user and not is_admin:
        raise PermissionDenied
    if request.method == 'POST':
        form = PostForm(request, request.POST, instance=post)
        if form.is_valid():
            instance = form.save(commit=False)
            instance.last_edit_date = request.timestamp
            instance.save()
            return redirect('forum_thread', contest_id=contest_id,
                            category_id=cat.id,
                            thread_id=thread.id)
    else:
        form = PostForm(request, instance=post)

    return TemplateResponse(request, 'forum/edit_post.html',
        {'forum': forum, 'category': cat, 'thread': thread, 'form': form,
         'post': post, 'msgs': msgs})
Ejemplo n.º 27
0
def forum_view(request, contest_id):
    (forum, lock) = get_forum_objects(request, lock_required=True)
    msgs = get_msgs(forum, request)
    return TemplateResponse(request, 'forum/forum.html', {'forum': forum,
                                                          'msgs': msgs,
                                                          'is_locked': lock})