Coverage for app/venv/lib/python3.14/site-packages/weblate/trans/models/variant.py: 93%

14 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 

6 

7from weblate.trans.defines import VARIANT_KEY_LENGTH, VARIANT_REGEX_LENGTH 

8from weblate.trans.fields import RegexField 

9 

10 

11class Variant(models.Model): 

12 component = models.ForeignKey( 

13 "trans.Component", on_delete=models.deletion.CASCADE, db_index=False 

14 ) 

15 variant_regex = RegexField(max_length=VARIANT_REGEX_LENGTH, blank=True) 

16 # This really should be a TextField, but it does not work with unique 

17 # index and MySQL 

18 key = models.CharField(max_length=VARIANT_KEY_LENGTH) 

19 defining_units = models.ManyToManyField( 

20 "trans.Unit", related_name="defined_variants" 

21 ) 

22 

23 class Meta: 

24 unique_together = (("component", "key", "variant_regex"),) 

25 verbose_name = "variant definition" 

26 verbose_name_plural = "variant definitions" 

27 

28 def __str__(self) -> str: 

29 return f"{self.component}: {self.key}"