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

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

2# 

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

4 

5from django.db import models 

6from django.utils.html import format_html 

7from django.utils.translation import gettext_lazy 

8 

9from weblate.checks.flags import Flags 

10from weblate.utils.colors import ColorChoices 

11 

12TRANSLATION_LABELS = {"Automatically translated"} 

13 

14 

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 ) 

33 

34 class Meta: 

35 app_label = "trans" 

36 unique_together = [("project", "name")] # noqa: RUF012 

37 verbose_name = "label" 

38 verbose_name_plural = "label" 

39 

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 ) 

46 

47 @property 

48 def filter_name(self) -> str: 

49 return f"label:{Flags.format_value(self.name)}"