Files
DjangoAdmin_Flask_EleVue/application/forms/job.py
T
DjangoAdmin DevandClaude 15f2a5e097 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>
2026-08-07 12:12:06 +08:00

175 lines
4.9 KiB
Python

"""
定时任务表单验证模块
=============================================================
提供定时任务相关的表单验证功能。
"""
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-删除'
)