Update reply and post forms to display correct capcodes

Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
2022-07-01 18:41:40 -07:00
parent b791cf6a6b
commit e866cbae0f

View File

@@ -6,6 +6,7 @@ from django import forms
from django.forms import ModelForm, ModelChoiceField
from django.forms.models import fields_for_model
from django.utils import timezone
from guardian.shortcuts import get_objects_for_user
from board.models import Ban, Post, Report, ReportReason, ReportRecord
from hcaptcha.fields import hCaptchaField
@@ -21,13 +22,23 @@ class PostForm(ModelForm):
class Meta:
model = Post
fields = ["subject", "name", "text", "image"]
fields = ["subject", "name", "text", "capcode", "image"]
def __init__(self, *args, user, board, ip, **kwargs):
super(PostForm, self).__init__(*args, **kwargs)
self.user = user
self.instance.board = board
self.instance.ip = ip
self.fields["capcode"].queryset = get_objects_for_user(
self.user, "board.use_capcode"
)
def clean(self):
super().clean()
capcode = self.cleaned_data["capcode"]
if capcode:
if not self.user or not self.user.has_perm("board.use_capcode", capcode):
raise ValidationError("Could not create post")
class ReplyForm(PostForm):
@@ -46,12 +57,16 @@ class ReplyForm(PostForm):
def __init__(self, *args, op, **kwargs):
super(ReplyForm, self).__init__(*args, **kwargs)
# Get the true OP of this post
while op.op:
op = op.op
self.instance.op = op
self.fields["capcode"].queryset = get_objects_for_user(
self.user, "board.use_capcode"
)
def clean(self):
super().clean()
# TODO
# Check if the user has the right permissions to use the selected capcode
capcode = self.cleaned_data["capcode"]
if capcode:
if not self.user or not self.user.has_perm("board.use_capcode", capcode):