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

1# Copyright © Michal Čihař <michal@weblate.org> 

2# 

3# SPDX-License-Identifier: GPL-3.0-or-later 

4 

5from __future__ import annotations 

6 

7from typing import TYPE_CHECKING 

8 

9from django.contrib import admin 

10 

11from weblate.lang.models import Language, Plural 

12from weblate.wladmin.models import WeblateModelAdmin 

13 

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 

16 

17 

18class PluralAdmin(admin.TabularInline): 

19 model = Plural 

20 extra = 0 

21 ordering = ("source",) 

22 

23 

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",) 

31 

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 

37 

38 if lang.plural_set.exists(): 

39 return 

40 

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 )