Coverage for vendor / models.py: 93%
30 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-24 12:43 +0000
« 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
6from . import app_label
9class VendorManager(models.Manager):
10 def get_by_natural_key(self, name):
11 return self.get(name=name)
14class Model(models.Model):
15 objects = VendorManager()
16 name = models.CharField(max_length=45)
17 is_hardware = models.BooleanField(
18 default=True, verbose_name="(virtual) Hardware Vendor"
19 )
20 is_software = models.BooleanField(default=True, verbose_name="Software Vendor")
22 group = models.ForeignKey(
23 Group,
24 editable=False,
25 blank=True,
26 null=True,
27 on_delete=models.PROTECT,
28 related_name="vendors",
29 )
31 history = HistoricalRecords()
33 def __str__(self):
34 return "%s" % self.name
36 def natural_key(self):
37 return (self.name,)
39 @classmethod
40 def get_natural_key_fields(cls):
41 return ["name"]
43 @classmethod
44 def get_natural_key_info(cls):
45 return [("name", None)]
47 def get_absolute_url(self):
48 return reverse("%s:detail" % app_label, kwargs={"pk": self.pk})
50 class Meta:
51 db_table = "{}_{}".format("sm", app_label)
52 constraints = [
53 models.UniqueConstraint(
54 fields=["name", "group"], name="unique_sm_vendor_name_group"
55 )
56 ]