diff --git a/weblate/lang/management/commands/setuplang.py b/weblate/lang/management/commands/setuplang.py index c9ffcb02c6ff..bf822509c808 100644 --- a/weblate/lang/management/commands/setuplang.py +++ b/weblate/lang/management/commands/setuplang.py @@ -2,6 +2,8 @@ # # SPDX-License-Identifier: GPL-3.0-or-later +from __future__ import annotations + from weblate.lang.models import Language from weblate.utils.management.base import BaseCommand @@ -20,7 +22,7 @@ def add_arguments(self, parser) -> None: def handle(self, *args, **options) -> None: """Create default set of languages.""" - kwargs = {} - if options["verbosity"] >= 1: - kwargs["logger"] = self.stdout.write - Language.objects.setup(options["update"], **kwargs) + Language.objects.setup( + update=options["update"], + logger=self.stdout.write if options["verbosity"] >= 1 else None, + ) diff --git a/weblate/lang/models.py b/weblate/lang/models.py index 4d113abf9d27..77de2a1aaecc 100644 --- a/weblate/lang/models.py +++ b/weblate/lang/models.py @@ -453,6 +453,10 @@ def prefetch(self): return self.prefetch_related("plural_set") +def dummy_logger(message: str) -> None: + return + + class LanguageManager(models.Manager.from_queryset(LanguageQuerySet)): use_in_migrations = True @@ -465,7 +469,12 @@ def default_language(self): """Return English language object.""" return self.get(code=settings.DEFAULT_LANGUAGE, skip_cache=True) - def setup(self, update, logger=lambda x: x) -> None: # noqa: C901 + def setup( # noqa: C901 + self, + *, + update: bool, + logger: Callable[[str], None] | None = None, + ) -> None: """ Create basic set of languages. @@ -474,6 +483,9 @@ def setup(self, update, logger=lambda x: x) -> None: # noqa: C901 from weblate_language_data.languages import LANGUAGES from weblate_language_data.population import POPULATION + if logger is None: + logger = dummy_logger + # Invalidate cache, we might change languages self.flush_object_cache() languages = { @@ -610,8 +622,15 @@ def setup(self, update, logger=lambda x: x) -> None: # noqa: C901 self._fixup_plural_types(logger) - def move_language(self, source: Language, target: Language, logger=lambda x: x): + def move_language( + self, + source: Language, + target: Language, + logger: Callable[[str], None] | None = None, + ): """Migrate all content from one language to anoother.""" + if logger is None: + logger = dummy_logger for translation in source.translation_set.iterator(): other = translation.component.translation_set.filter(language=target) if other.exists(): @@ -672,7 +691,7 @@ def setup_lang(sender, **kwargs) -> None: """Create basic set of languages on database migration.""" if settings.UPDATE_LANGUAGES: with transaction.atomic(): - Language.objects.setup(True) + Language.objects.setup(update=True) class Language(models.Model, CacheKeyMixin): diff --git a/weblate/lang/tests.py b/weblate/lang/tests.py index 89638add6034..ef7106f67b46 100644 --- a/weblate/lang/tests.py +++ b/weblate/lang/tests.py @@ -856,7 +856,7 @@ def component_language_codes(): self.assertIn(self.old_code, component_language_codes()) logs: list[str] = [] - Language.objects.setup(True, logs.append) + Language.objects.setup(update=True, logger=logs.append) if new_language_created: self.assertIn(f"Created language {self.new_code}", logs) else: