Implement new Profanity Checker on Form Validation

Why am I still up doing this at 3am
This commit is contained in:
Xevion
2022-03-29 03:00:12 -05:00
parent 820ecf3d74
commit 8cf2f02772
2 changed files with 23 additions and 5 deletions

View File

@@ -1,9 +1,11 @@
from wtforms import Form, BooleanField, StringField, PasswordField, validators
from validators import NoProfanity
class RegistrationForm(Form):
username = StringField('Username', [validators.Length(min=4, max=25)])
name = StringField('Name', [validators.Length(min=2, max=35)])
username = StringField('Username', [validators.Length(min=4, max=25), NoProfanity()])
name = StringField('Name', [validators.Length(min=2, max=35), NoProfanity()])
password = PasswordField('New Password', [
validators.DataRequired(),
validators.EqualTo('confirm', message='Passwords must match')
@@ -20,12 +22,12 @@ class LoginForm(Form):
class EditProfileForm(Form):
name = RegistrationForm.name
about_me = StringField('About Me', [validators.Optional()])
about_me = StringField('About Me', [validators.Optional(), NoProfanity()])
class NewPostForm(Form):
text = StringField('Text', [validators.Length(min=15, max=1000)])
text = StringField('Text', [validators.Length(min=15, max=1000), NoProfanity()])
class NewCommentForm(Form):
text = StringField('Text', [validators.Length(min=5, max=50)])
text = StringField('Text', [validators.Length(min=5, max=50), NoProfanity()])

16
validators.py Normal file
View File

@@ -0,0 +1,16 @@
from typing import Optional
from profanity_filter import ProfanityFilter
from wtforms.validators import ValidationError
pf = ProfanityFilter()
class NoProfanity(object):
def __init__(self, message: Optional[str] = None):
if not message:
message = 'Profanity is not acceptable on Runnerspace'
self.message = message
def __call__(self, form, field):
if pf.is_profane(field.data):
raise ValidationError(self.message)