fix: 修复模板查询方法名(repo.get替代repo.get_by_id) #1231
@@ -67,7 +67,9 @@ def _calc_preview_resolution(video_ratio: str = "") -> str:
|
||||
return ratio_map.get(video_ratio.strip(), PREVIEW_RESOLUTION)
|
||||
|
||||
|
||||
def _infer_video_ratio_from_template(template_id: str, db: Session) -> str:
|
||||
def _infer_video_ratio_from_template(
|
||||
template_id: str, db: Session, user_id: str = ""
|
||||
) -> str:
|
||||
"""从模板 mode 推断视频比例,前端未传 video_ratio 时使用。
|
||||
|
||||
Returns:
|
||||
@@ -77,7 +79,7 @@ def _infer_video_ratio_from_template(template_id: str, db: Session) -> str:
|
||||
return ""
|
||||
try:
|
||||
repo = SQLAlchemyTemplateRepository(db)
|
||||
template = repo.get_by_id(template_id)
|
||||
template = repo.get(template_id, user_id)
|
||||
if template:
|
||||
mode = getattr(template, "mode", "") or ""
|
||||
ratio = _TEMPLATE_MODE_TO_RATIO.get(mode.strip(), "")
|
||||
@@ -230,7 +232,7 @@ def create_preview_generation_task(
|
||||
# 确定视频比例:优先前端传入,否则从模板 mode 推断
|
||||
video_ratio = request.video_ratio or ""
|
||||
if not video_ratio and request.template_id:
|
||||
video_ratio = _infer_video_ratio_from_template(request.template_id, db)
|
||||
video_ratio = _infer_video_ratio_from_template(request.template_id, db, user_id)
|
||||
|
||||
use_case = CreateGenerationTaskUseCase(generation_task_repository)
|
||||
|
||||
|
||||
@@ -1174,8 +1174,8 @@ class TestInferVideoRatioFromTemplate:
|
||||
mock_db = MagicMock()
|
||||
|
||||
with patch("app.api.routes.generation_preview.SQLAlchemyTemplateRepository") as MockRepo:
|
||||
MockRepo.return_value.get_by_id.return_value = mock_template
|
||||
result = _infer_video_ratio_from_template("tpl_001", mock_db)
|
||||
MockRepo.return_value.get.return_value = mock_template
|
||||
result = _infer_video_ratio_from_template("tpl_001", mock_db, "user_1")
|
||||
assert result == "9:16"
|
||||
|
||||
def test_standard_mode_returns_16_9(self):
|
||||
@@ -1187,8 +1187,8 @@ class TestInferVideoRatioFromTemplate:
|
||||
mock_db = MagicMock()
|
||||
|
||||
with patch("app.api.routes.generation_preview.SQLAlchemyTemplateRepository") as MockRepo:
|
||||
MockRepo.return_value.get_by_id.return_value = mock_template
|
||||
result = _infer_video_ratio_from_template("tpl_001", mock_db)
|
||||
MockRepo.return_value.get.return_value = mock_template
|
||||
result = _infer_video_ratio_from_template("tpl_001", mock_db, "user_1")
|
||||
assert result == "16:9"
|
||||
|
||||
def test_unknown_mode_returns_empty(self):
|
||||
@@ -1200,8 +1200,8 @@ class TestInferVideoRatioFromTemplate:
|
||||
mock_db = MagicMock()
|
||||
|
||||
with patch("app.api.routes.generation_preview.SQLAlchemyTemplateRepository") as MockRepo:
|
||||
MockRepo.return_value.get_by_id.return_value = mock_template
|
||||
result = _infer_video_ratio_from_template("tpl_001", mock_db)
|
||||
MockRepo.return_value.get.return_value = mock_template
|
||||
result = _infer_video_ratio_from_template("tpl_001", mock_db, "user_1")
|
||||
assert result == ""
|
||||
|
||||
def test_template_not_found_returns_empty(self):
|
||||
@@ -1211,8 +1211,8 @@ class TestInferVideoRatioFromTemplate:
|
||||
mock_db = MagicMock()
|
||||
|
||||
with patch("app.api.routes.generation_preview.SQLAlchemyTemplateRepository") as MockRepo:
|
||||
MockRepo.return_value.get_by_id.return_value = None
|
||||
result = _infer_video_ratio_from_template("nonexistent", mock_db)
|
||||
MockRepo.return_value.get.return_value = None
|
||||
result = _infer_video_ratio_from_template("nonexistent", mock_db, "user_1")
|
||||
assert result == ""
|
||||
|
||||
def test_empty_template_id_returns_empty(self):
|
||||
@@ -1220,7 +1220,7 @@ class TestInferVideoRatioFromTemplate:
|
||||
from app.api.routes.generation_preview import _infer_video_ratio_from_template
|
||||
|
||||
mock_db = MagicMock()
|
||||
result = _infer_video_ratio_from_template("", mock_db)
|
||||
result = _infer_video_ratio_from_template("", mock_db, "user_1")
|
||||
assert result == ""
|
||||
|
||||
def test_db_exception_returns_empty(self):
|
||||
@@ -1231,7 +1231,7 @@ class TestInferVideoRatioFromTemplate:
|
||||
|
||||
with patch("app.api.routes.generation_preview.SQLAlchemyTemplateRepository") as MockRepo:
|
||||
MockRepo.side_effect = Exception("db connection error")
|
||||
result = _infer_video_ratio_from_template("tpl_001", mock_db)
|
||||
result = _infer_video_ratio_from_template("tpl_001", mock_db, "user_1")
|
||||
assert result == ""
|
||||
|
||||
|
||||
@@ -1265,7 +1265,7 @@ class TestPreviewRouteAutoInfersVideoRatio:
|
||||
)
|
||||
|
||||
with patch("app.api.routes.generation_preview.SQLAlchemyTemplateRepository") as MockRepo:
|
||||
MockRepo.return_value.get_by_id.return_value = mock_template
|
||||
MockRepo.return_value.get.return_value = mock_template
|
||||
with patch("app.api.routes.generation_preview.CreateGenerationTaskUseCase") as MockUC:
|
||||
MockUC.return_value.execute.return_value = task
|
||||
with patch(
|
||||
|
||||
Reference in New Issue
Block a user