|
8 | 8 |
|
9 | 9 | import shutil |
10 | 10 | from datetime import datetime, timedelta |
11 | | -from pathlib import Path |
12 | 11 | from typing import Any |
13 | 12 |
|
14 | | -from videoannotator.config_env import STORAGE_RETENTION_DAYS, STORAGE_BASE_DIR |
| 13 | +from videoannotator.config_env import STORAGE_BASE_DIR, STORAGE_RETENTION_DAYS |
15 | 14 | from videoannotator.database.models import Job, JobStatus |
16 | 15 | from videoannotator.storage.file_backend import FileStorageBackend |
17 | 16 | from videoannotator.utils.logging_config import get_logger |
@@ -107,9 +106,7 @@ def find_old_jobs(retention_days: int | None = None) -> list[Job]: |
107 | 106 | days = retention_days if retention_days is not None else STORAGE_RETENTION_DAYS |
108 | 107 |
|
109 | 108 | if days is None or days <= 0: |
110 | | - raise ValueError( |
111 | | - "Cleanup is disabled (STORAGE_RETENTION_DAYS not set or <= 0)" |
112 | | - ) |
| 109 | + raise ValueError("Cleanup is disabled (STORAGE_RETENTION_DAYS not set or <= 0)") |
113 | 110 |
|
114 | 111 | cutoff_date = datetime.now() - timedelta(days=days) |
115 | 112 |
|
@@ -150,7 +147,11 @@ def verify_job_safe_to_delete(job: Job) -> tuple[bool, str]: |
150 | 147 | return False, "Job has no completion timestamp" |
151 | 148 |
|
152 | 149 | # Check 3: Completion must be in the past (naive comparison for test compatibility) |
153 | | - completed_at = job.completed_at.replace(tzinfo=None) if hasattr(job.completed_at, 'replace') else job.completed_at |
| 150 | + completed_at = ( |
| 151 | + job.completed_at.replace(tzinfo=None) |
| 152 | + if hasattr(job.completed_at, "replace") |
| 153 | + else job.completed_at |
| 154 | + ) |
154 | 155 | if completed_at > datetime.now(): |
155 | 156 | return False, "Job completion timestamp is in the future" |
156 | 157 |
|
|
0 commit comments