class FeedbackForm(BaseForm): """反馈问题form""" type = IntegerField( label='反馈类型', validators=[validators.DataRequired(message='反馈类型必须输入!')]) content = simple.TextAreaField( label='反馈内容', validators=[validators.DataRequired(message='反馈内容必须输入!')]) contact = simple.StringField(label='联系方式', validators=[Optional()]) feedbackImages = simple.StringField(label='反馈图片', validators=[ Optional(), ]) def validate_type(self, type): try: FeedbackType.query.filter(FeedbackType.id == type.data).one() except NoResultFound: raise validators.StopValidation('不存在该分类!') except MultipleResultsFound: raise validators.StopValidation('不存在该分类!') def validate_feedbackImages(self, images): if images.data: for i in images.data: if not re.match( 'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', i): raise validators.StopValidation('图片不符合规则!')
class ArticleForm(BaseForm): handlemod = core.RadioField(label='选择操作类型', choices=( (1, '恢复链接'), (2, '删除链接'), ), validators=[DataRequired()], coerce=int) urls = simple.StringField( label="链接地址", validators=[DataRequired()], ) remark = simple.StringField(label="备注", ) relation = core.RadioField(label='是否关联3g网及分页', choices=( (1, '关联'), (2, '不关联'), ), validators=[DataRequired()], coerce=int) username = simple.StringField(label='用户名', validators=[DataRequired()]) def validate_urls(self, field): try: for url in field.data.split(): if not re.match('^http://', url): raise ParameterException(url + '链接地址请以http://开头') parse = urlparse(url) if not re.search("test.com$", parse.netloc): raise ParameterException(msg="只接收test.com域名下的链接") except: raise ParameterException("urls参数格式错误" + traceback.format_exc())
class RegistrationForm(Form): username = simple.StringField( label='Username', widget=widgets.TextInput(), validators=[ validators.DataRequired(message="Username can not be empty"), validators.Length(6, 40, 'Need to be more than 6 characters') ]) password = simple.PasswordField( label='Password', widget=widgets.PasswordInput(), validators=[ validators.DataRequired(message='Password can not be empty'), validators.Length(6, 40, 'Need to be more than 6 characters') ]) password2 = simple.PasswordField( label='Repeat Password', widget=widgets.PasswordInput(), validators=[ validators.DataRequired(message='Password can not be empty'), validators.EqualTo('password', message='Two password not same') ]) email = simple.StringField( label='Email', widget=widgets.TextInput(), validators=[ validators.DataRequired(message='Email can not be empty'), validators.Email(message='Wrong Email Syntax') ]) submit = simple.SubmitField(label='Submit', widget=widgets.SubmitInput())
class UserForm(Form): userName = simple.StringField( label="用户名", validators=[ validators.DataRequired(message="用户名必须填写!"), validators.length(min=6, max=20, message="用户名应在6-20位之间!") ], ) pwd = simple.PasswordField(label="密码", validators=[ validators.DataRequired(message="密码不能为空"), validators.Regexp( '^(?:(?=.*[A-Za-z])(?=.*[0-9])).{5,}$', message='密码应最少6位,由字母和数字的组成!') ]) nickName = simple.StringField( label='昵称', validators=[ validators.DataRequired(message="昵称必须填写!"), validators.length(max=20, message="用户名不得大于20位!") ]) def validate_userName(self, userName): if User.query.filter(User.userName == userName.data).first(): raise validators.StopValidation("用户已被注册!")
class RegForm(Form): username = simple.StringField(label="用户名:", validators=[ validators.Length( min=4, max=10, message="用户名不能小于%(min)d,不能大于%(max)d") ]) password = simple.PasswordField( label="密码:", validators=[ validators.Length(max=10, min=6, message="password不能小于%(min)d,不能大于%(max)d") ]) repassword = simple.PasswordField( label="确认眼神:", validators=[validators.EqualTo("password", message="眼神未确认")]) email = simple.StringField(label="邮箱", validators=[validators.Email(message="邮箱格式不符")]) gender = core.RadioField(label="性别:", choices=[(1, "女"), (2, "男")], coerce=int) hobby = core.SelectMultipleField(label="嗜好", choices=[(1, "小姐姐"), (2, "小萝莉"), (3, "小正太"), (4, "小哥哥")], coerce=int) sub = simple.SubmitField(label="登陆", render_kw={"class": "bs"})
class RegForm(Form): username = simple.StringField( label="用户名", validators=[ validators.DataRequired(message="用户名不能为空"), validators.Length(min=6, max=16, message="用户名必须大于等于6,小于等于16") ], render_kw={"class": "my_class"}) password = simple.PasswordField( label="密码", validators=[ validators.DataRequired(message="密码不能为空"), validators.Length(min=6, max=16, message="密码必须大于等于6,小于等于16") ]) repassword = simple.PasswordField( label="确认密码", validators=[ validators.DataRequired(message="确认密码不能为空"), validators.EqualTo("password", message="两次密码不一致") ]) # widget=widgets.RadioInput(), gender = core.RadioField(label="性别", choices=((0, "女"), (1, "男")), default=1, render_kw={"class": "my_class"}, coerce=int) email = simple.StringField(label="邮箱", validators=[ validators.DataRequired(message="邮箱不能为空"), validators.Email(message="不符合规定") ])
class WebUrlForm(BaseForm): handlemod = core.RadioField(label='选择操作类型', choices=( (1, '恢复链接'), (2, '删除链接'), ), validators=[DataRequired()], coerce=int) weburls = simple.StringField( label="链接地址", widget=widgets.TextArea(), render_kw={ "placeholder": "输入页面url地址以换行分隔", "rows": 10, 'class': 'form-control' }, validators=[DataRequired()], ) imagexpath = simple.StringField(label="获取图片的xpath规则", widget=widgets.TextInput(), render_kw={ "placeholder": "爬取图片的xpath规则,不懂可以不填", "value": "//center//img/@src", 'class': 'form-control' }) pages = BooleanField(label="是否关联分页") remark = simple.StringField(label="备注", widget=widgets.TextInput(), render_kw={ "placeholder": "本次操作说明,可不填写。", 'class': 'form-control' })
class ConfigForms(BaseForm): name = simple.StringField(label="配置名称", validators=[DataRequired()], render_kw={'class': 'form-control'}) config = simple.StringField(label="详细配置", widget=widgets.TextArea(), render_kw={ "placeholder": "JSON格式的配置信息", "rows": 10, 'class': 'form-control' }, validators=[DataRequired()]) remark = simple.StringField(label="备注", render_kw={ "placeholder": "可不填写。", 'class': 'form-control' }) def validate_config(self, field): try: json.loads(field.data) except: raise validators.ValidationError("json格式错误" + traceback.format_exc())
class RegisterForm(FlaskForm): username = simple.StringField(label="请输入用户名:", validators=[ validators.DataRequired(message="用户名不能为空"), validators.Length(min=6, max=18, message='用户名长度必须大于%(min)d,且小于%(max)d') ], widget=widgets.TextInput(),render_kw={"class":"form-control"} ) password = simple.StringField(label="请输入密码:", validators=[ validators.DataRequired(message="密码不能为空"), validators.Length(min=8,message="密码至少%(min)d位"), validators.Regexp(regex="^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)" "[A-Za-z\d~!@#$%^&*()_+]{8,}", message="密码至少包含1个小写和大写字母以及1个数字") ], widget=widgets.PasswordInput(),render_kw={"class":"form-control"}) # 确认密码 password2 = simple.StringField(label="请确认密码:", validators=[ validators.DataRequired(message="请确认您的密码"), EqualTo("password",message="两次密码输入不一致") ], widget=widgets.PasswordInput(),render_kw={"class":"form-control", "placeholder":"确认密码"} )
class ProjectAddForm(form.Form): name = simple.StringField( label=u'名称', validators=[validators.DataRequired(message=u'名称不能为空')], render_kw={'class': 'form-control', 'placeholder': u'项目名称'} ) title = simple.StringField( label=u'描述', validators=[validators.DataRequired(message=u'描述不能为空')], render_kw={'class': 'form-control', 'placeholder': u'项目描述'} ) repository = simple.StringField( label=u'地址', validators=[validators.DataRequired(message=u'地址不能为空')], render_kw={'class': 'form-control', 'placeholder': u'项目地址'} ) hosts = core.SelectMultipleField( label=u'主机', choices=(), coerce=int, render_kw={'class': 'form-control'} ) def __init__(self, *args, **kwargs): super(ProjectAddForm, self).__init__(*args, **kwargs) self.hosts.choices = db.session.query(models.Host.id, models.Host.hostname).all()
class AddCmpInfoForm(FlaskForm): name = simple.StringField( label="公司名称", validators=[ validators.DataRequired( message="用户名不能为空"), # 必填项检查 message 为返回的错误内容 validators.length(max=20) ], widget=widgets.TextInput(), render_kw={"class": "name"}) location = simple.StringField( label="公司地址", validators=[ validators.DataRequired( message="用户名不能为空"), # 必填项检查 message 为返回的错误内容 validators.length(max=20) ], widget=widgets.TextInput(), render_kw={"class": "location"}) submit = simple.SubmitField( label="提交", render_kw={ "class": "btn", }, )
class UserRegForm(Form): name = simple.StringField( label='用户名', widget=widgets.TextInput(), ) xxx = simple.StringField( label='测试字段', widget=widgets.TextInput(), )
class ProjectForm2(Form): project_name = simple.StringField( label="Project name*", widget=widgets.TextInput(), validators=[ validators.DataRequired(message="project name cannot be empty"), validators.Length( max=50, min=1, message="The length of username should between 1 and 50"), validators.Regexp('^[a-zA-Z0-9_.-]*$', flags=0, message="must be characters or digits only.") ], render_kw={"class": "form-control"}) project_des = simple.StringField( label="Project description (optional)", widget=widgets.TextInput(), validators=[ validators.Length( max=50, min=0, message="The length of username should between 0 and 50") ], render_kw={"class": "form-control"}) data1 = FileField(u'Data File 1 (csv)*', render_kw={"class": "custom-file-input"}, validators=[validators.Optional()]) data2 = FileField(u'Data File 2 (csv)*', render_kw={"class": "custom-file-input"}, validators=[validators.Optional()]) blocking_choices = [('id', 'ID'), ('fn', 'Firstname'), ('ln', 'Lastname'), ('bd', 'DoB'), ('gd', 'Gender'), ('rc', 'Race')] blocking = SelectMultipleField( 'Blocking*', choices=blocking_choices, render_kw={"class": "form-control selectpicker"}) ''' assignto = SelectField( u'Assign to', choices=[], render_kw={"class":"form-control selectpicker", "data-live-search": "ture"} ) kapr = FloatField('Privacy budget', [validators.NumberRange(min=0, max=100, message="Please enter a valid value.")], render_kw={"class":"form-control"}) ''' assignee_area = TextAreaField( u'Assignee', [validators.optional(), validators.length(max=200)], render_kw={ "class": "form-control", "id": "assignee_area" })
class LoginForm(Form): username = simple.StringField( label="用户名", validators=[validators.data_required(message="用户名不能为空")], widget=widgets.TextInput(), render_kw={"class": "my_username"}) password = simple.StringField( label="密码", validators=[validators.data_required(message="密码不能为空!")], widget=widgets.PasswordInput()) submit = simple.SubmitField(label="提交")
class addForm(FlaskForm): language = core.SelectField( label='基础环境镜像:', choices=language_choices(), ) pluginname = simple.StringField( label='接口名称: ', widget=widgets.TextInput(), # validators=[DataRequired(message='接口名称不能为空'), # NoneOf(['t1', 't2', 't10', '3'], message='wuxiao', values_formatter = 'caonima')] # render_kw={ # "placeholder":"请输入账号!", # "required":'required' #表示输入框不能为空,并有提示信息 # } ) inputfilename = simple.StringField( label='输入文件名: ', widget=widgets.TextInput(), # validators=[DataRequired()] ) inputtype = core.SelectMultipleField( label='输入数据类型:', choices=(('txt', 'txt'), ('world', 'world'), ('jpg', 'jpg'), ('png', 'png')), default=['txt', 'world', 'jpg', 'png']) outputfilename = simple.StringField(label='输出文件名:', widget=widgets.TextInput()) outputtype = core.SelectMultipleField( label='输出数据类型:', choices=(('txt', 'txt'), ('world', 'world'), ('jpg', 'jpg'), ('png', 'png')), option_widget=widgets.CheckboxInput(), default=['txt', 'world', 'jpg', 'png']) sources = core.SelectField(label='软件源:', render_kw={'class': 'index-select'}, choices=sources_choices()) textarea = TextAreaField( label='接口运行环境:', render_kw={'class': 'text-control'}, # validators=[DataRequired()] ) pluginfile = FileField( label='文件选择:', # validators=[FileRequired(), # FileAllowed(['jpg','jpeg','png','gif'])] ) runCommand = simple.StringField(label='运行命令:', widget=widgets.TextInput()) detail = TextAreaField( label='接口描述:', render_kw={'class': 'text-detail'}, # validators=[DataRequired()] ) save = simple.SubmitField('检查') pulish = simple.SubmitField('提交')
class LoginEmailForm(Form): email = simple.StringField(label='邮箱', validators=[ validators.Length(8, 64, message='邮箱格式不正确'), validators.DataRequired(message="邮箱必须填写!"), validators.Email(message='这不是一个正确的邮箱格式'), ]) code = simple.StringField(label='验证码', validators=[ validators.Length(6, 6, message='验证码不正确'), validators.DataRequired(message="验证码未填写!"), ])
class EmailForm(Form): """发送邮箱验证码form""" user = simple.StringField(label='用户') email = simple.StringField(label='邮箱', validators=[ validators.Length(8, 64, message='邮箱格式不正确'), validators.DataRequired(message="邮箱必须填写!"), validators.Email(message='这不是一个正确的邮箱格式'), ]) def validate_email(self, email): self.user.data = User.query.filter( and_(User.email == email.data, User.is_email)).first() if not self.user.data: raise validators.StopValidation("邮箱用户不存在!")
class LoginForm(Form): # 字段(内部包含正则表达式) name = simple.StringField( label='用户名', validators=[ # 内部校验器 validators.DataRequired(message='用户名不能为空.'), validators.Length(min=2, max=18, message='用户名长度必须大于%(min)d且小于%(max)d') ], # 页面的显示插件 widget=widgets.TextInput(), # 给插件添加的属性 # render_kw={'class': 'form-control'} ) # pwd = html5.EmailField() # 可以使用html5的验证方式 pwd = simple.PasswordField( label='密码', validators=[ validators.DataRequired(message='密码不能为空.'), validators.Length(min=2, message='用户名长度必须大于%(min)d'), ], widget=widgets.PasswordInput(), # render_kw={'class': 'form-control'} )
class LoginForm(Form): # 字段(内部包含正则表达式) name = simple.StringField( label='用户名', validators=[ validators.DataRequired(message='用户名不能为空.'), validators.Length(min=6, max=18, message='用户名长度必须大于%(min)d且小于%(max)d') ], widget=widgets.TextInput(), # 页面上显示的插件 render_kw={'class': 'form-control'}) # 字段(内部包含正则表达式) pwd = simple.PasswordField( label='密码', validators=[ validators.DataRequired(message='密码不能为空.'), validators.Length(min=8, message='用户名长度必须大于%(min)d'), validators.Regexp( regex= "^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}", message='密码至少8个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符') ], widget=widgets.PasswordInput(), render_kw={'class': 'form-control'})
class RegisterForm(Form): phone = simple.StringField(validators=[ validators.DataRequired(message="手机号不能为空"), validators.Length(max=11, min=7, message="手机号长度不对请输入正确的手机号") ], widget=widgets.TextInput()) username = simple.StringField(validators=[ validators.DataRequired(message="用户名不能为空"), validators.Length(max=20, message="用户名长度不能超过20") ], widget=widgets.TextInput()) password = simple.PasswordField(validators=[ validators.DataRequired(message="密码不能为空"), validators.Length(max=16, min=6, message="密码长度应在6~16之间") ], widget=widgets.PasswordInput())
class LoginForm(Form): user = simple.StringField(label='用户名', validators=[ validators.DataRequired(message='用户名不能为空.'), validators.Length( min=2, max=18, message='用户名长度必须大于%(min)d且小于%(max)d') ], widget=widgets.TextInput(), render_kw={ 'class': 'form-control', 'placeholder': '用户名' }) pwd = simple.PasswordField( label='密码', validators=[ validators.DataRequired(message='密码不能为空.'), validators.Length(min=8, message='用户密码长度必须大于%(min)d'), # validators.Regexp(regex="^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}", # message='密码至少8个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符') ], widget=widgets.PasswordInput(), render_kw={ 'class': 'form-control', 'placeholder': '密码' })
class LoginForm(Form): username = simple.StringField( label="用户名:", widget=widgets.TextInput(), validators=[ validators.DataRequired(message="用户名不能为空"), validators.Length(min=4, max=10, message="用户名不能小于%(min)d,不能大于%(max)d") ], # 声明校验方式 id="username", #widget=widgets.FileInput(), render_kw={"class": "my_class"}, ) password = simple.PasswordField( label="密码:", validators=[ validators.Length(max=10, min=6, message="password不能小于%(min)d,不能大于%(max)d"), validators.Regexp("\d+", message="密码只能是数字") ], id="pwd", render_kw={"style": "width:300px;"}) sub = simple.SubmitField(label="登陆", render_kw={"class": "bs"})
class LoginForm(Form): '''Form''' name = simple.StringField( label="Username", widget=widgets.TextInput(), validators=[ validators.DataRequired(message="username cannot be empty"), validators.Length( max=20, min=5, message="The length of username should between 5 and 20") ], render_kw={"class": "form-control"}) pwd = simple.PasswordField( label="password", validators=[ validators.DataRequired(message="password cannot be empty"), validators.Length( max=30, min=5, message="The length of password should between 5 and 30"), ], widget=widgets.PasswordInput(), render_kw={"class": "form-control"})
class RoomCreateForm(Form): roomname = simple.StringField( validators=[ validators.DataRequired(message='房間名不能为空.'), validators.Length(min=2, message='房間名长度必须大于%(min)d'), ], widget=widgets.TextInput(), )
class SearchForm(Form): content = simple.StringField( label="", widget=widgets.TextInput(), validators=[ validators.DataRequired(message="请输入搜索内容")], render_kw={"class": "form-control"} # 设置属性生成的html属性 )
class EditConfigForms(ConfigForms): name = simple.StringField(label="配置名称", validators=[DataRequired()], render_kw={ 'class': 'form-control', 'readonly': 'ture' })
class UpdateInfoForm(Form): username = simple.StringField( label='用户名', validators=[ validators.DataRequired(message='用户名不能为空'), validators.Length(min=3, max=18, message='用户名长度必须大于%(min)d, 并且小于%(max)d'), ], widget=widgets.TextInput(), render_kw={'class': 'form-control'}) age = simple.StringField(label='用户年龄', widget=widgets.TextInput(), render_kw={'class': 'form-control'}) hometown = simple.StringField(label='用户居住城市', widget=widgets.TextInput(), render_kw={'class': 'form-control'})
class LoginForm(Form): name = simple.StringField( validators=[ # 验证 validators.DataRequired(message='用户名不能为空'), validators.length(min=6, max=18, message='用户名长度必须大于6小于18') ], widget=widgets.TextArea(), # 插件 render_kw={'placeholder': '请输入用户名'}, )
class Userforms(Form): id = simple.StringField() service = core.SelectField(choices=(), ) def __init__(self, *args, **kwargs): super(Userforms, self).__init__(*args, **kwargs) conn = DataBase() self.service.choices = conn.get_all( "select * from userform", []) # 数据变化时,动态更新前端数据. 类的静态字段初始化时生产.
class NodesInfo(Form): host = simple.StringField( label='地址', validators=[ validators.DataRequired() ], widget=widgets.TextInput(), render_kw={'class': 'form-control', 'placeholder': '例如:192.168.0.1', 'style': 'width: 250px'} ) port = simple.StringField( label='端口', validators=[ validators.DataRequired() ], widget=widgets.TextInput(), render_kw={'class': 'form-control', 'placeholder': '例如:5000', 'style': 'width: 250px'} )