Update reply and post forms to display correct capcodes
Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user