Skip to content

Commit

Permalink
chore: clarified type of setup args
Browse files Browse the repository at this point in the history
- make args kwargs only to avoid confusion position based bool
- type annotate logger
- avoid using lambdas
  • Loading branch information
nijel committed Feb 14, 2025
1 parent e49ede7 commit 49f8df8
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 8 deletions.
10 changes: 6 additions & 4 deletions weblate/lang/management/commands/setuplang.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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,
)
25 changes: 22 additions & 3 deletions weblate/lang/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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.
Expand All @@ -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 = {
Expand Down Expand Up @@ -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():
Expand Down Expand Up @@ -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):
Expand Down
2 changes: 1 addition & 1 deletion weblate/lang/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down

0 comments on commit 49f8df8

Please sign in to comment.