""" 定时任务表单验证模块 ============================================================= 提供定时任务相关的表单验证功能。 """ from wtforms import ValidationError, IntegerField, StringField from wtforms.validators import NumberRange, DataRequired, Length, Optional from application.forms.base_form import BaseForm from application.models.job import Job # ============================================================ # 定时任务表单验证 # ============================================================ class JobForm(BaseForm): """ 定时任务表单验证类 用于添加和更新定时任务时的数据验证。 """ # 任务ID id = IntegerField( label='任务ID', validators=[ Optional(), NumberRange(min=1, message='任务ID必须大于0') ], description='任务唯一标识,更新时必填' ) # 任务名称 jobName = StringField( label='任务名称', validators=[ DataRequired(message='任务名称不能为空'), Length(max=255, message='任务名称长度不得超过255个字符') ], description='任务名称' ) # 任务别名 jobAlias = StringField( label='任务别名', validators=[ Optional(), Length(max=255, message='任务别名长度不得超过255个字符') ], description='任务别名' ) # 任务分组 jobGroup = StringField( label='任务分组', validators=[ Optional(), Length(max=255, message='任务分组长度不得超过255个字符') ], description='任务分组,默认DEFAULT' ) # 任务触发器 jobTrigger = StringField( label='任务触发器', validators=[ Optional(), Length(max=255, message='任务触发器长度不得超过255个字符') ], description='任务触发器标识' ) # 任务状态 status = IntegerField( label='任务状态', validators=[ DataRequired(message='任务状态不能为空'), NumberRange(min=0, max=3, message='任务状态值在0~3之间') ], description='任务状态:0-未发布 1-运行中 2-暂停 3-删除' ) # Cron表达式 cronExpression = StringField( label='Cron表达式', validators=[ Optional(), Length(max=255, message='Cron表达式长度不得超过255个字符') ], description='Cron表达式,如:0 2 * * *' ) # 执行策略 executePolicy = IntegerField( label='执行策略', validators=[ DataRequired(message='执行策略不能为空'), NumberRange(min=1, max=3, message='执行策略值在1~3之间') ], description='执行策略:1-立即执行 2-执行一次 3-放弃执行' ) # 是否同步任务 isSync = IntegerField( label='是否同步任务', validators=[ DataRequired(message='是否同步任务不能为空'), NumberRange(min=0, max=1, message='是否同步任务值在0~1之间') ], description='是否同步任务:0-异步 1-同步' ) # 任务URL url = StringField( label='任务URL', validators=[ Optional(), Length(max=255, message='任务URL长度不得超过255个字符') ], description='任务请求URL' ) # 任务备注 note = StringField( label='任务备注', validators=[ Optional(), Length(max=255, message='任务备注长度不得超过255个字符') ], description='任务备注说明' ) def validate_job_name(self, field): """验证任务名称不能重复""" if not field.data: return current_id = self.id.data if self.id.data else None query = Job.query.filter(Job.job_name == field.data, Job.is_delete == 0) if current_id: query = query.filter(Job.id != current_id) if query.first(): raise ValidationError("任务名称已存在") # ============================================================ # 任务状态设置表单 # ============================================================ class JobStatusForm(BaseForm): """任务状态设置表单验证类""" id = IntegerField( label='任务ID', validators=[ DataRequired(message='任务ID不能为空'), NumberRange(min=1, message='任务ID必须大于0') ], description='要修改状态的任务ID' ) status = IntegerField( label='任务状态', validators=[ Optional(), NumberRange(min=0, max=3, message='任务状态值在0~3之间') ], description='目标状态:0-未发布 1-运行中 2-暂停 3-删除' )