Coverage for app/venv/lib/python3.14/site-packages/weblate/lang/admin.py: 58%
29 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 07:15 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 07:15 +0000
1# Copyright © Michal Čihař <michal@weblate.org>
2#
3# SPDX-License-Identifier: GPL-3.0-or-later
5from __future__ import annotations
7from typing import TYPE_CHECKING
9from django.contrib import admin
11from weblate.lang.models import Language, Plural
12from weblate.wladmin.models import WeblateModelAdmin
14if TYPE_CHECKING: 14 ↛ 15line 14 didn't jump to line 15 because the condition on line 14 was never true
15 from weblate.auth.models import AuthenticatedHttpRequest
18class PluralAdmin(admin.TabularInline):
19 model = Plural
20 extra = 0
21 ordering = ("source",)
24@admin.register(Language)
25class LanguageAdmin(WeblateModelAdmin):
26 list_display = ("name", "code", "direction")
27 search_fields = ("name", "code")
28 list_filter = ("direction",)
29 inlines = (PluralAdmin,)
30 ordering = ("name",)
32 def save_related(
33 self, request: AuthenticatedHttpRequest, form, formsets, change
34 ) -> None:
35 super().save_related(request, form, formsets, change)
36 lang = form.instance
38 if lang.plural_set.exists():
39 return
41 # Automatically create plurals if language does not have one
42 try:
43 baselang = Language.objects.get(code=lang.base_code)
44 baseplural = baselang.plural
45 lang.plural_set.create(
46 source=Plural.SOURCE_DEFAULT,
47 number=baseplural.number,
48 formula=baseplural.formula,
49 )
50 except (Language.DoesNotExist, IndexError):
51 lang.plural_set.create(
52 source=Plural.SOURCE_DEFAULT, number=2, formula="n != 1"
53 )