Files
DjangoAdmin_Flask_EleVue/application/models/job.py
T
DjangoAdmin DevandClaude 658ee6d596 refactor: P2 core+common 建设(应用工厂/扩展/工具层迁入 src/)
【结构】
- src/core/:database/response/jwt/password/security/redis_client/mail/scheduler
- src/common/:base_model/base_db/forms(base_form+fields)/constants/utils
- src/models_registry.py:模型聚合器(Flask-Migrate 全量表识别)

【绞杀者 shim】extensions/、utils/、application/constants|forms|models 打兼容转发
【兼容修复】应用工厂抽取至 application/factory.py(P2 前置,P1 已完成)

【基线修复】application/models(25) + middleware(7) 原被嵌套 .gitignore(*)
误排除出版本库,已补入(base_model/base_db 现为 shim,原版在 src/common/)

【登记既有缺陷】
1. flask db CLI 因 .env FLASK_VERSION 与 --version 冲突报错 → Makefile 已加 FLASK_SKIP_DOTENV=1
2. 本机 Redis 未设密码但 REDIS_AUTH=True,/captcha 报 AUTH 错误(环境问题)

【验收】22 模型表全量识别;src/ flake8 零告警;pytest 5 passed;应用启动;
/login 表单校验、/user/page 鉴权拦截冒烟正常

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-07 13:20:46 +08:00

153 lines
4.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
定时任务模型模块
=============================================================
提供定时任务管理的数据模型定义。
"""
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
from utils.case_converter import convert_camel_to_snake
# ============================================================
# 定时任务模型
# ============================================================
class Job(BaseModel, BaseDB):
"""
定时任务模型
用于存储定时任务信息。
Attributes:
id: 主键ID(继承自 BaseModel)
job_name: 任务名称(String(255),必填)
job_alias: 任务别名(String(255),可选)
job_group: 任务分组(String(255),可选)
job_trigger: 任务触发器(String(255),可选)
status: 任务状态(Integer,0-未发布 1-运行中 2-暂停 3-删除)
cron_expression: Cron表达式(String(255),可选)
execute_policy: 执行策略(Integer,1-立即执行 2-执行一次 3-放弃执行)
is_sync: 是否同步任务(Integer,0-否 1-是)
url: 任务URL(String(255),可选)
note: 任务备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
__tablename__ = DB_PREFIX + "job"
# ============================================================
# 字段定义
# ============================================================
# 任务名称
job_name = db.Column(
db.String(255),
nullable=False,
comment="任务名称"
)
# 任务别名
job_alias = db.Column(
db.String(255),
nullable=True,
comment="任务别名"
)
# 任务分组
job_group = db.Column(
db.String(255),
nullable=True,
comment="任务分组"
)
# 任务触发器
job_trigger = db.Column(
db.String(255),
nullable=True,
comment="任务触发器"
)
# 任务状态:0-未发布 1-运行中 2-暂停 3-删除
status = db.Column(
db.Integer,
nullable=False,
default=0,
comment="任务状态:0-未发布 1-运行中 2-暂停 3-删除"
)
# Cron表达式
cron_expression = db.Column(
db.String(255),
nullable=True,
comment="Cron表达式"
)
# 执行策略:1-立即执行 2-执行一次 3-放弃执行
execute_policy = db.Column(
db.Integer,
nullable=False,
default=1,
comment="执行策略:1-立即执行 2-执行一次 3-放弃执行"
)
# 是否同步任务:0-否 1-是
is_sync = db.Column(
db.Integer,
nullable=False,
default=0,
comment="是否同步任务:0-否 1-是"
)
# 任务URL
url = db.Column(
db.String(255),
nullable=True,
comment="任务URL"
)
# 任务备注
note = db.Column(
db.String(255),
nullable=True,
comment="任务备注"
)
# ============================================================
# 常量定义
# ============================================================
class Status:
"""任务状态常量"""
UNPUBLISHED = 0 # 未发布
RUNNING = 1 # 运行中
PAUSED = 2 # 暂停
DELETED = 3 # 删除
class ExecutePolicy:
"""执行策略常量"""
EXECUTE_NOW = 1 # 立即执行
EXECUTE_ONCE = 2 # 执行一次
ABANDON = 3 # 放弃执行
class IsSync:
"""是否同步任务常量"""
ASYNC = 0 # 异步
SYNC = 1 # 同步
# ============================================================
# 魔法方法
# ============================================================
def __repr__(self):
return '定时任务:{}'.format(self.job_name)
def __str__(self):
return self.__repr__()