init
This commit is contained in:
108
app/forms.py
Normal file
108
app/forms.py
Normal file
@@ -0,0 +1,108 @@
|
||||
from flask_wtf import FlaskForm
|
||||
from wtforms import StringField, SubmitField, PasswordField, BooleanField, TextAreaField, SelectField
|
||||
from wtforms.validators import DataRequired, Length, Email, EqualTo, ValidationError, Optional, URL
|
||||
from .models import User
|
||||
from wtforms_sqlalchemy.fields import QuerySelectField
|
||||
|
||||
def get_active_partner_sites():
|
||||
return PartnerSite.query.filter_by(is_active=True).order_by(PartnerSite.name)
|
||||
|
||||
class SearchForm(FlaskForm):
|
||||
search_term = StringField(
|
||||
'输入用户名或邮箱进行查询',
|
||||
validators=[DataRequired(message="查询内容不能为空。"), Length(min=3, max=100)],
|
||||
render_kw={"placeholder": "用户名 / 邮箱"}
|
||||
)
|
||||
submit = SubmitField('查询')
|
||||
|
||||
class RegistrationForm(FlaskForm):
|
||||
username = StringField('用户名(与PT站点相同)', validators=[DataRequired(), Length(min=3, max=64)])
|
||||
email = StringField('邮箱(与PT站点相同)', validators=[DataRequired(), Email()])
|
||||
password = PasswordField('密码', validators=[DataRequired(), Length(min=6)])
|
||||
password2 = PasswordField(
|
||||
'确认密码', validators=[DataRequired(), EqualTo('password', message='两次输入的密码必须一致。')])
|
||||
pt_site = SelectField('所属站点', validators=[DataRequired()])
|
||||
uid = StringField('你在该站点的 UID', validators=[DataRequired(), Length(max=50)])
|
||||
submit = SubmitField('提交注册申请')
|
||||
def validate_username(self, username):
|
||||
user = User.query.filter_by(username=username.data).first()
|
||||
if user:
|
||||
raise ValidationError('该用户名已被使用。')
|
||||
def validate_email(self, email):
|
||||
user = User.query.filter_by(email=email.data.lower()).first()
|
||||
if user:
|
||||
raise ValidationError('该邮箱已被注册。')
|
||||
class LoginForm(FlaskForm):
|
||||
email = StringField('邮箱', validators=[DataRequired(), Length(1, 120), Email()])
|
||||
password = PasswordField('密码', validators=[DataRequired()])
|
||||
remember_me = BooleanField('记住我')
|
||||
submit = SubmitField('登录')
|
||||
class ReportForm(FlaskForm):
|
||||
# reported_pt_site = StringField(
|
||||
# '被举报用户所在的 PT 站点',
|
||||
# validators=[DataRequired(), Length(min=2, max=100)],
|
||||
# render_kw={"placeholder": "例如:some.site.com"}
|
||||
# )
|
||||
reported_pt_site = SelectField('违规站点', validators=[DataRequired()])
|
||||
reported_uid = StringField(
|
||||
'被举报的用户名',
|
||||
validators=[Optional(), Length(max=50)],
|
||||
render_kw={"placeholder": "可选"}
|
||||
)
|
||||
reported_email = StringField(
|
||||
'被举报的邮箱',
|
||||
validators=[DataRequired(), Email(message="请输入有效的邮箱地址。")],
|
||||
render_kw={"placeholder": "必须填写"}
|
||||
)
|
||||
reason_category = SelectField(
|
||||
'举报原因分类',
|
||||
choices=[
|
||||
('cheating', '作弊 (刷上传/下载)'),
|
||||
('trading', '账号交易/共享'),
|
||||
('spam', '发布垃圾/违禁信息'),
|
||||
('abusive', '辱骂/人身攻击'),
|
||||
('radio', '分享率过低'),
|
||||
('other', '其他 (请在描述中详述)')
|
||||
],
|
||||
validators=[DataRequired()]
|
||||
)
|
||||
description = TextAreaField(
|
||||
'详细情况描述',
|
||||
validators=[DataRequired(), Length(min=10, max=2000)],
|
||||
render_kw={"rows": 5, "placeholder": "请详细描述事件经过,至少10个字符。"}
|
||||
)
|
||||
evidences = TextAreaField(
|
||||
'证据图片链接 (每个链接占一行)',
|
||||
validators=[DataRequired(message="请至少提供一个有效的图片链接。")],
|
||||
render_kw={"rows": 4, "placeholder": "https://example.com/image1.png\nhttps://example.com/image2.jpg"}
|
||||
)
|
||||
submit = SubmitField('提交举报')
|
||||
class RevokeForm(FlaskForm):
|
||||
reason = TextAreaField('撤销理由', validators=[DataRequired(message='必须填写撤销理由。')])
|
||||
submit = SubmitField('确认撤销')
|
||||
class UpdateUserForm(FlaskForm):
|
||||
role = SelectField('角色', choices=[
|
||||
('user', '普通用户 (User)'),
|
||||
('trust_user', '信任用户 (Trust User)'),
|
||||
('admin', '管理员 (Admin)')
|
||||
], validators=[DataRequired()])
|
||||
|
||||
status = SelectField('状态', choices=[
|
||||
('active', '激活 (Active)'),
|
||||
('disabled', '禁用 (Disabled)')
|
||||
], validators=[DataRequired()])
|
||||
|
||||
submit = SubmitField('更新')
|
||||
class CommentForm(FlaskForm):
|
||||
body = TextAreaField('添加你的审核建议', validators=[DataRequired()])
|
||||
submit = SubmitField('提交')
|
||||
class AppealForm(FlaskForm):
|
||||
reason = TextAreaField('申诉理由', validators=[DataRequired()], render_kw={'rows': 5, 'placeholder': '请详细说明您认为该举报不成立的原因,并提供任何可以支持您观点的证据。'})
|
||||
submit = SubmitField('提交申诉')
|
||||
class AppealMessageForm(FlaskForm):
|
||||
body = TextAreaField('回复内容', validators=[DataRequired()], render_kw={'rows': 4, 'placeholder': '请输入您的回复...'})
|
||||
submit = SubmitField('发送')
|
||||
class PartnerSiteForm(FlaskForm):
|
||||
name = StringField('站点名称', validators=[DataRequired(), Length(max=100)])
|
||||
url = StringField('站点 URL (可选)', validators=[Optional(), URL(), Length(max=255)])
|
||||
submit = SubmitField('添加站点')
|
||||
Reference in New Issue
Block a user