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)
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) })
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})
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})
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})
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) })
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})
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) })
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)
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 })
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 })
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 })
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 })
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)})
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, })
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) })
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), }, )
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)
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)})
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 })
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})
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})