skillbox/server/core/management/commands/migrate_translation.py

44 lines
1.4 KiB
Python

import csv
import os
from django.core import management
from django.core.management import BaseCommand, CommandError
from basicknowledge.models import BasicKnowledge
from datetime import date
from core.convert_page_translation import (
AlreadyTranslatedException,
ModuleDoesNotExistException,
convert_page_to_translation,
)
EN = "en"
FR = "fr"
class Command(BaseCommand):
"""
usage: `python manage.py migrate_translation --slug slug --original original_slug --language 'en'`
"""
def add_arguments(self, parser):
parser.add_argument("--slug", type=str, required=True)
parser.add_argument("--original", type=str, required=True)
parser.add_argument("--language", type=str, choices=[EN, FR], default=EN)
def handle(self, *_, **options):
slug = options.get("slug")
original_slug = options.get("original")
language_code = options.get("language")
try:
result = convert_page_to_translation(
slug=slug, original_slug=original_slug, language_code=language_code
)
self.stdout.write(result)
except ModuleDoesNotExistException as e:
raise CommandError(f"Module does not exist: {e}")
except AlreadyTranslatedException:
raise CommandError(
f"Pages {slug} and {original_slug} already are translations of each other"
)