32 lines
1.5 KiB
Python
32 lines
1.5 KiB
Python
from flask_wtf import FlaskForm
|
|
from wtforms import StringField, PasswordField, SelectField, BooleanField, IntegerField, SubmitField
|
|
from wtforms.validators import DataRequired, Optional, ValidationError, NumberRange
|
|
import re
|
|
|
|
def email_check(form, field):
|
|
pattern = re.compile(r'^[^@]+@[^@]+\.[^@]+$')
|
|
if not field.data or not pattern.match(field.data):
|
|
raise ValidationError('Invalid email address.')
|
|
|
|
class UserForm(FlaskForm):
|
|
email = StringField('Email', validators=[DataRequired(), email_check])
|
|
password = PasswordField('Password', validators=[Optional()])
|
|
role = SelectField('Role',
|
|
choices=[('user','User'), ('admin','Admin')],
|
|
validators=[DataRequired()])
|
|
is_verified = BooleanField('Verified')
|
|
excluded_from_analytics = BooleanField('Exclude from Analytics')
|
|
|
|
# new ban/suspend fields
|
|
ban_type = SelectField('Account Status',
|
|
choices=[
|
|
('active','Active'),
|
|
('temp','Temporarily Suspended'),
|
|
('perm','Permanently Banned')
|
|
],
|
|
validators=[DataRequired()])
|
|
suspend_days = IntegerField('Suspend days',
|
|
default=7,
|
|
validators=[Optional(), NumberRange(min=1, max=365)])
|
|
submit = SubmitField('Save')
|