Files
gh-christianlouis-docuelevate/migrations/versions/036_add_document_translation_fields.py
T
copilot-swe-agent[bot] 3a221a62cd feat(translation): add model, config, task, API, and UI for default document language translation
- Add detected_language, default_language_text, default_language_code columns to FileRecord
- Add default_document_language column to UserProfile
- Add DEFAULT_DOCUMENT_LANGUAGE config setting (defaults to "en")
- Create translate_to_default_language Celery task
- Integrate translation trigger into embed_metadata_into_pdf pipeline
- Add /api/files/{id}/translate and /api/files/{id}/translation/default API endpoints
- Add /files/{id}/text/default-language view endpoint
- Update file_view.html with translation sections (default language, on-the-fly)
- Add translation keys to en.json
- Create Alembic migration 036
- Update .env.demo

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-16 11:54:13 +00:00

45 lines
1.6 KiB
Python

"""Add document translation fields to files and user_profiles tables.
Adds detected_language, default_language_text, and default_language_code to
the files table so that a translated version of the document text can be
stored alongside the original.
Adds default_document_language to user_profiles so each user can override
the system-wide default translation target language.
Revision ID: 036_add_document_translation_fields
Revises: 035_add_routing_rules
Create Date: 2026-03-16
"""
from typing import Union
import sqlalchemy as sa
from alembic import op
revision: str = "036_add_document_translation_fields"
down_revision: Union[str, None] = "035_add_routing_rules"
depends_on: Union[str, None] = None
def upgrade() -> None:
"""Add translation columns to files and user_profiles."""
with op.batch_alter_table("files") as batch_op:
batch_op.add_column(sa.Column("detected_language", sa.String(10), nullable=True))
batch_op.add_column(sa.Column("default_language_text", sa.Text(), nullable=True))
batch_op.add_column(sa.Column("default_language_code", sa.String(10), nullable=True))
with op.batch_alter_table("user_profiles") as batch_op:
batch_op.add_column(sa.Column("default_document_language", sa.String(10), nullable=True))
def downgrade() -> None:
"""Remove translation columns."""
with op.batch_alter_table("user_profiles") as batch_op:
batch_op.drop_column("default_document_language")
with op.batch_alter_table("files") as batch_op:
batch_op.drop_column("default_language_code")
batch_op.drop_column("default_language_text")
batch_op.drop_column("detected_language")