Coverage for clusterpackagetype / 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 ClusterPackageTypeManager(models.Manager): 

10 def get_by_natural_key(self, name): 

11 return self.get(name=name) 

12 

13 

14class Model(models.Model): 

15 objects = ClusterPackageTypeManager() 

16 history = HistoricalRecords() 

17 name = models.CharField(max_length=45) 

18 

19 def __str__(self): 

20 return "%s" % self.name 

21 

22 def natural_key(self): 

23 return (self.name,) 

24 

25 group = models.ForeignKey( 

26 Group, 

27 editable=False, 

28 blank=True, 

29 null=True, 

30 on_delete=models.PROTECT, 

31 related_name="clusterpackagetypes", 

32 ) 

33 

34 @classmethod 

35 def get_natural_key_fields(cls): 

36 return ["name"] 

37 

38 @classmethod 

39 def get_natural_key_info(cls): 

40 return [("name", None)] 

41 

42 def get_absolute_url(self): 

43 

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

45 

46 class Meta: 

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

48 constraints = [ 

49 models.UniqueConstraint( 

50 fields=["name", "group"], name="unique_sm_clusterpackagetype_name_group" 

51 ) 

52 ]