Coverage for patchtime / models.py: 93%

28 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-03-24 12:43 +0000

1from django.db import models 

2from django.urls import reverse 

3from simple_history.models import HistoricalRecords 

4from django.contrib.auth.models import Group 

5 

6from . import app_label 

7 

8 

9class ModelManager(models.Manager): 

10 def get_by_natural_key(self, name): 

11 return self.get(name=name) 

12 

13 

14class Model(models.Model): 

15 

16 name = models.CharField(max_length=45) 

17 

18 group = models.ForeignKey( 

19 Group, 

20 editable=False, 

21 blank=True, 

22 null=True, 

23 on_delete=models.PROTECT, 

24 related_name="patchtimes", 

25 ) 

26 

27 objects = ModelManager() 

28 history = HistoricalRecords() 

29 

30 def natural_key(self): 

31 return (self.name,) 

32 

33 @classmethod 

34 def get_natural_key_fields(cls): 

35 return ["name"] 

36 

37 @classmethod 

38 def get_natural_key_info(cls): 

39 return [("name", None)] 

40 

41 def __str__(self): 

42 return "%s" % self.name 

43 

44 def get_absolute_url(self): 

45 return reverse("%s:detail" % app_label, kwargs={"pk": self.pk}) 

46 

47 class Meta: 

48 db_table = "{}_{}".format("sm", app_label) 

49 constraints = [ 

50 models.UniqueConstraint( 

51 fields=["name", "group"], name="unique_sm_patchtime_name_group" 

52 ) 

53 ]