Add post modify view

This allows moderators to modify posts (add sticky, etc).

Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
2022-06-30 16:21:36 -07:00
parent 2947ab6cf2
commit 6f99472f16
13 changed files with 124 additions and 22 deletions

View File

@@ -13,7 +13,7 @@ from django.utils import timezone
from guardian.shortcuts import get_objects_for_user
from board.forms import BanForm, PostForm, ReplyForm, ReportForm
from board.forms import *
from board.models import Ban, BanTemplate, Board, Post, Report
from board.utils import *
@@ -23,6 +23,7 @@ __all__ = (
"BannedView",
"BoardView",
"PostCreateView",
"PostModifyView",
"PostView",
"PostSuccessView",
"ReplyCreateView",
@@ -109,7 +110,9 @@ class BoardView(TemplateView):
last_page = (thread_count // threads_per_page) + 1
kwargs["board"] = self.board
kwargs["threads"] = self.board.threads.order_by("-last_bump")[start:end]
kwargs["threads"] = self.board.threads.order_by("-sticky", "-last_bump")[
start:end
]
kwargs["current_page"] = page
kwargs["pages"] = range(1, last_page + 1)
kwargs["last_page"] = last_page
@@ -145,6 +148,24 @@ class PostCreateView(CreateView):
return reverse("board:post_success") + "?" + query.urlencode()
class PostModifyView(PermissionRequiredMixin, edit.UpdateView):
model = Post
form_class = PostModifyForm
template_name = "board/post_modify_view.html"
def has_permission(self) -> bool:
user = self.request.user
if not user:
return False
# TODO add more permissions as required
return user.has_perm("board.can_sticky")
def dispatch(self, request, *args, **kwargs):
self.post_obj = get_object_or_404(Post, id=kwargs["pk"])
self.board = self.post_obj.board
return super(PostModifyView, self).dispatch(request, *args, **kwargs)
class ReplyCreateView(CreateView):
model = Post
form_class = ReplyForm