Coverage for app/venv/lib/python3.14/site-packages/weblate/trans/models/label.py: 95%
21 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.db import models
6from django.utils.html import format_html
7from django.utils.translation import gettext_lazy
9from weblate.checks.flags import Flags
10from weblate.utils.colors import ColorChoices
12TRANSLATION_LABELS = {"Automatically translated"}
15class Label(models.Model):
16 project = models.ForeignKey(
17 "trans.Project", on_delete=models.deletion.CASCADE, db_index=False
18 )
19 name = models.CharField(verbose_name=gettext_lazy("Label name"), max_length=190)
20 color = models.CharField(
21 verbose_name=gettext_lazy("Color"),
22 max_length=30,
23 choices=ColorChoices.choices,
24 blank=False,
25 default=None,
26 )
27 description = models.CharField(
28 verbose_name=gettext_lazy("Label description"),
29 default="",
30 max_length=250,
31 blank=True,
32 )
34 class Meta:
35 app_label = "trans"
36 unique_together = [("project", "name")] # noqa: RUF012
37 verbose_name = "label"
38 verbose_name_plural = "label"
40 def __str__(self) -> str:
41 return format_html(
42 '<span class="align-middle badge label label-{}">{}</span>',
43 self.color,
44 self.name,
45 )
47 @property
48 def filter_name(self) -> str:
49 return f"label:{Flags.format_value(self.name)}"