This commit is contained in:
Marsway 2026-01-13 11:03:09 +08:00
parent 4e47959f8c
commit 35f0f2bfed
2 changed files with 12 additions and 13 deletions

View File

@ -51,7 +51,7 @@ def retry_joblog(request: Request, log_id: int):
finished_at=None, finished_at=None,
) )
execute_job.delay(snapshot_params=snapshot, log_id=int(new_log.id)) execute_job.delay(snapshot_params=snapshot, log_id=int(new_log.id))
url = request.url_for("admin:details", identity="joblog", pk=str(new_log.id)) url = request.url_for("admin:details", identity="job-log", pk=str(new_log.id))
return RedirectResponse(url, status_code=303) return RedirectResponse(url, status_code=303)
finally: finally:
session.close() session.close()
@ -85,7 +85,7 @@ def run_job(request: Request, job_id: str):
finished_at=None, finished_at=None,
) )
execute_job.delay(job_id=job.id, log_id=int(new_log.id)) execute_job.delay(job_id=job.id, log_id=int(new_log.id))
url = request.url_for("admin:details", identity="joblog", pk=str(new_log.id)) url = request.url_for("admin:details", identity="job-log", pk=str(new_log.id))
return RedirectResponse(url, status_code=303) return RedirectResponse(url, status_code=303)
finally: finally:
session.close() session.close()

View File

@ -156,31 +156,30 @@ class JobAdmin(ModelView, model=Job):
session.close() session.close()
if created_log_id is not None: if created_log_id is not None:
url = request.url_for("admin:details", identity="joblog", pk=str(created_log_id)) url = request.url_for("admin:details", identity="job-log", pk=str(created_log_id))
return RedirectResponse(url, status_code=303) return RedirectResponse(url, status_code=303)
return RedirectResponse(request.url_for("admin:list", identity=self.identity), status_code=303) return RedirectResponse(request.url_for("admin:list", identity=self.identity), status_code=303)
@action( @action(
name="view_logs", name="view_logs",
label="查看日志", label="查看日志",
confirmation_message="查看该任务的日志?",
add_in_list=True, add_in_list=True,
add_in_detail=True, add_in_detail=True,
) )
async def view_logs(self, request: Request): # type: ignore[override] async def view_logs(self, request: Request): # type: ignore[override]
pks = request.query_params.get("pks", "").split(",") pks = request.query_params.get("pks", "").split(",")
pk = next((p for p in pks if p), "") pk = next((p for p in pks if p), "")
base = str(request.url_for("admin:list", identity="joblog")) base = str(request.url_for("admin:list", identity="job-log"))
if pk: if pk:
return RedirectResponse(f"{base}?search={quote_plus(pk)}", status_code=303) return RedirectResponse(f"{base}?search={quote_plus(pk)}", status_code=303)
return RedirectResponse(base, status_code=303) return RedirectResponse(base, status_code=303)
@action( @action(
name="disable_job", name="disable_job",
label="停用任务(保留日志)", label="停用任务(保留日志)",
confirmation_message="确认停用该任务(保留历史日志)?", confirmation_message="确认停用该任务(保留历史日志)?",
add_in_list=True, add_in_list=True,
add_in_detail=True, add_in_detail=False,
) )
async def disable_job(self, request: Request): # type: ignore[override] async def disable_job(self, request: Request): # type: ignore[override]
pks = request.query_params.get("pks", "").split(",") pks = request.query_params.get("pks", "").split(",")
@ -201,10 +200,10 @@ class JobAdmin(ModelView, model=Job):
@action( @action(
name="clear_job_logs", name="clear_job_logs",
label="清理任务日志(保留任务)", label="清理日志(保留任务)",
confirmation_message="确认清理该任务的所有日志(保留任务本身)?", confirmation_message="确认清理该任务的所有日志(保留任务本身)?",
add_in_list=True, add_in_list=True,
add_in_detail=True, add_in_detail=False,
) )
async def clear_job_logs(self, request: Request): # type: ignore[override] async def clear_job_logs(self, request: Request): # type: ignore[override]
pks = request.query_params.get("pks", "").split(",") pks = request.query_params.get("pks", "").split(",")
@ -220,10 +219,10 @@ class JobAdmin(ModelView, model=Job):
@action( @action(
name="delete_job_with_logs", name="delete_job_with_logs",
label="删除任务及日志(硬删除)", label="删除任务(含日志)",
confirmation_message="确认删除该任务及其所有日志?此操作不可恢复。", confirmation_message="确认删除该任务及其所有日志?此操作不可恢复。",
add_in_list=True, add_in_list=True,
add_in_detail=True, add_in_detail=False,
) )
async def delete_job_with_logs(self, request: Request): # type: ignore[override] async def delete_job_with_logs(self, request: Request): # type: ignore[override]
pks = request.query_params.get("pks", "").split(",") pks = request.query_params.get("pks", "").split(",")
@ -310,14 +309,14 @@ class JobLogAdmin(ModelView, model=JobLog):
name = "任务日志" name = "任务日志"
name_plural = "任务日志" name_plural = "任务日志"
icon = "fa fa-list" icon = "fa fa-list"
identity = "job-log"
can_create = False can_create = False
can_edit = False can_edit = False
can_delete = False can_delete = False
# 支持按 job_id 搜索与筛选 # 支持按 job_id 搜索(不启用筛选栏,避免页面溢出)
column_searchable_list = [JobLog.job_id] column_searchable_list = [JobLog.job_id]
column_filters = [OperationColumnFilter(JobLog.job_id, title="任务ID")]
# 列表更适合扫读:保留关键字段 + message截断 # 列表更适合扫读:保留关键字段 + message截断
column_list = [JobLog.id, JobLog.job_id, JobLog.status, JobLog.started_at, JobLog.finished_at, JobLog.message] column_list = [JobLog.id, JobLog.job_id, JobLog.status, JobLog.started_at, JobLog.finished_at, JobLog.message]