feat(glossaries): add target_language support - DB migration, API, and UI language pair display
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 2m52s

This commit is contained in:
2026-05-31 13:25:12 +02:00
parent fecb3f7abb
commit 85cd5456f8
7 changed files with 105 additions and 15 deletions

View File

@@ -57,6 +57,7 @@ def _format_glossary(glossary: Glossary) -> dict:
"id": glossary.id,
"name": glossary.name,
"source_language": glossary.source_language,
"target_language": getattr(glossary, "target_language", "en") or "en",
"terms": [_format_term(t) for t in glossary.terms] if glossary.terms else [],
"created_at": glossary.created_at.isoformat() if glossary.created_at else None,
"updated_at": glossary.updated_at.isoformat() if glossary.updated_at else None,
@@ -106,6 +107,7 @@ async def create_glossary(
user_id=user.id,
name=body.name,
source_language=body.source_language,
target_language=body.target_language,
created_at=datetime.now(timezone.utc),
updated_at=datetime.now(timezone.utc),
)
@@ -185,6 +187,7 @@ async def list_glossaries(
id=g.id,
name=g.name,
source_language=g.source_language or "fr",
target_language=getattr(g, "target_language", None) or "en",
terms_count=len(g.terms) if g.terms else 0,
created_at=g.created_at,
)
@@ -339,6 +342,8 @@ async def update_glossary(
if body.source_language is not None:
glossary.source_language = body.source_language
if body.target_language is not None:
glossary.target_language = body.target_language
if body.terms is not None:
# Delete existing terms
session.query(GlossaryTerm).filter(