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
« 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 django import template
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
20register = template.Library()
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)