chore: 基线提交(重构前代码快照)
- git 初始化 + .gitignore 补全(根 .env / logs / instance / __pycache__ 等) - 修复 utils/.gitignore 误将整个 utils/ 源码层忽略的问题,补入全部工具源码(含 ip2region.xdb) - 含后端全部代码:application / extensions / utils / config / migrations - 含前端 ui/(后续整体迁走) - 不含根 .env(含密钥,本地保留) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,174 @@
|
||||
"""
|
||||
定时任务表单验证模块
|
||||
=============================================================
|
||||
|
||||
提供定时任务相关的表单验证功能。
|
||||
"""
|
||||
|
||||
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-删除'
|
||||
)
|
||||
Reference in New Issue
Block a user