fix: include language parameter in marketplace import
Bug: Language selector worked on UI but import always used 'en' Root causes: 1. Frontend: startImport() was not including language in API payload 2. Backend: language was not stored in import job database record 3. Backend: language was not returned in API response models Fixes: - Add language to payload in marketplace.js startImport() - Add language column to MarketplaceImportJob model - Store language when creating import job in service - Include language in both response model converters - Add database migration for language column 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
"""add language column to marketplace_import_jobs
|
||||
|
||||
Revision ID: b412e0b49c2e
|
||||
Revises: 91d02647efae
|
||||
Create Date: 2025-12-13 13:35:46.524893
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = 'b412e0b49c2e'
|
||||
down_revision: Union[str, None] = '91d02647efae'
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
# Add language column with default value for existing rows
|
||||
op.add_column(
|
||||
'marketplace_import_jobs',
|
||||
sa.Column('language', sa.String(length=5), nullable=False, server_default='en')
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
op.drop_column('marketplace_import_jobs', 'language')
|
||||
@@ -48,6 +48,7 @@ class MarketplaceImportJobService:
|
||||
status="pending",
|
||||
source_url=request.source_url,
|
||||
marketplace=request.marketplace,
|
||||
language=request.language,
|
||||
vendor_id=vendor.id,
|
||||
user_id=user.id,
|
||||
)
|
||||
@@ -185,6 +186,7 @@ class MarketplaceImportJobService:
|
||||
job_id=job.id,
|
||||
status=job.status,
|
||||
marketplace=job.marketplace,
|
||||
language=job.language,
|
||||
vendor_id=job.vendor_id,
|
||||
vendor_code=job.vendor.vendor_code if job.vendor else None,
|
||||
vendor_name=job.vendor.name if job.vendor else None,
|
||||
@@ -208,6 +210,7 @@ class MarketplaceImportJobService:
|
||||
job_id=job.id,
|
||||
status=job.status,
|
||||
marketplace=job.marketplace,
|
||||
language=job.language,
|
||||
vendor_id=job.vendor_id,
|
||||
vendor_code=job.vendor.vendor_code if job.vendor else None,
|
||||
vendor_name=job.vendor.name if job.vendor else None,
|
||||
|
||||
@@ -64,6 +64,7 @@ class MarketplaceImportJob(Base, TimestampMixin):
|
||||
# Import configuration
|
||||
marketplace = Column(String, nullable=False, index=True, default="Letzshop")
|
||||
source_url = Column(String, nullable=False)
|
||||
language = Column(String(5), nullable=False, default="en") # Language for translations
|
||||
|
||||
# Status tracking
|
||||
status = Column(
|
||||
|
||||
@@ -258,7 +258,8 @@ function adminMarketplace() {
|
||||
vendor_id: parseInt(this.importForm.vendor_id),
|
||||
source_url: this.importForm.csv_url,
|
||||
marketplace: this.importForm.marketplace,
|
||||
batch_size: this.importForm.batch_size
|
||||
batch_size: this.importForm.batch_size,
|
||||
language: this.importForm.language // Include selected language
|
||||
};
|
||||
|
||||
adminMarketplaceLog.info('Starting import:', payload);
|
||||
|
||||
Reference in New Issue
Block a user