Coverage for app/venv/lib/python3.14/site-packages/weblate/metrics/templatetags/metrics.py: 19%

32 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 django import template 

6 

7from weblate.auth.models import User 

8from weblate.lang.models import Language 

9from weblate.metrics.models import Metric 

10from weblate.metrics.wrapper import MetricsWrapper 

11from weblate.trans.models import ( 

12 Category, 

13 Component, 

14 ComponentList, 

15 Project, 

16 Translation, 

17) 

18from weblate.utils.stats import CategoryLanguage, ProjectLanguage 

19 

20register = template.Library() 

21 

22 

23@register.filter 

24def metrics(obj): 

25 if obj is None: 

26 return MetricsWrapper(obj, Metric.SCOPE_GLOBAL, 0) 

27 if isinstance(obj, Translation): 

28 return MetricsWrapper(obj, Metric.SCOPE_TRANSLATION, obj.pk) 

29 if isinstance(obj, Component): 

30 return MetricsWrapper(obj, Metric.SCOPE_COMPONENT, obj.pk) 

31 if isinstance(obj, Project): 

32 return MetricsWrapper(obj, Metric.SCOPE_PROJECT, obj.pk) 

33 if isinstance(obj, ComponentList): 

34 return MetricsWrapper(obj, Metric.SCOPE_COMPONENT_LIST, obj.pk) 

35 if isinstance(obj, ProjectLanguage): 

36 return MetricsWrapper( 

37 obj, Metric.SCOPE_PROJECT_LANGUAGE, obj.project.id, obj.language.id 

38 ) 

39 if isinstance(obj, Category): 

40 return MetricsWrapper(obj, Metric.SCOPE_CATEGORY, obj.pk) 

41 if isinstance(obj, CategoryLanguage): 

42 return MetricsWrapper( 

43 obj, Metric.SCOPE_CATEGORY_LANGUAGE, obj.category.id, obj.language.id 

44 ) 

45 if isinstance(obj, Language): 

46 return MetricsWrapper(obj, Metric.SCOPE_LANGUAGE, obj.id) 

47 if isinstance(obj, User): 

48 return MetricsWrapper(obj, Metric.SCOPE_USER, obj.id) 

49 msg = f"Unsupported type for metrics: {obj!r}" 

50 raise ValueError(msg)