diff --git a/server/core/migrate_i18n_pages.py b/server/core/convert_page_translation.py similarity index 81% rename from server/core/migrate_i18n_pages.py rename to server/core/convert_page_translation.py index 4b151ca5..c4a92247 100644 --- a/server/core/migrate_i18n_pages.py +++ b/server/core/convert_page_translation.py @@ -11,7 +11,7 @@ logger = get_logger(__name__) # todo: make this a django command # todo: add language to translate to as an argument # todo: write a test maybe -def migrate_i18n(slug: str, original_slug: str): +def convert_page_to_translation(slug: str, original_slug: str, language_code="en"): """ Migrate a module and its children to a new locale and links it to its translation in the original locale. @@ -19,9 +19,13 @@ def migrate_i18n(slug: str, original_slug: str): @param slug: the slug of the module to migrate @param original_slug: the slug of the module in the original locale """ - module = Module.objects.get(slug=slug) - original = Module.objects.get(slug=original_slug) - en = Locale.objects.get(language_code="en") + try: + module = Module.objects.get(slug=slug) + original = Module.objects.get(slug=original_slug) + except Module.DoesNotExist: + logger.warning("Module does not exist") + return + en = Locale.objects.get(language_code=language_code) logger.debug("starting this") topic: Topic = module.get_parent() try: diff --git a/server/core/management/commands/migrate_translation.py b/server/core/management/commands/migrate_translation.py new file mode 100644 index 00000000..002d4491 --- /dev/null +++ b/server/core/management/commands/migrate_translation.py @@ -0,0 +1,43 @@ +import csv +import os +from django.core import management +from django.core.management import BaseCommand + +from basicknowledge.models import BasicKnowledge +from datetime import date + +from core.convert_page_translation import 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") + self.stdout.write(f"args {slug} {original_slug} {language_code}") + convert_page_to_translation( + slug=slug, original_slug=original_slug, language_code=language_code + ) + # with open(filename) as f: + # reader = csv.reader(f) + # for name, slugs in reader: + # self.stdout.write(name) + # self.stdout.write(slugs) + # cwd = os.getcwd() + # self.stdout.write(cwd) + # with open(f"{cwd}/exports/{name}.html", "w") as dest: + # management.call_command( + # "export_instruments", slugs=slugs, stdout=dest + # )