Coverage for location / models.py: 94%
32 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_countries.fields import CountryField
3from django.urls import reverse
4from simple_history.models import HistoricalRecords
5from django.contrib.auth.models import Group
7from . import app_label
10class LocationManager(models.Manager):
11 def get_by_natural_key(self, name, country):
12 return self.get(name=name, country=country)
15class Model(models.Model):
16 objects = LocationManager()
17 history = HistoricalRecords()
18 name = models.CharField(max_length=45)
19 country = CountryField()
21 group = models.ForeignKey(
22 Group,
23 editable=False,
24 blank=True,
25 null=True,
26 on_delete=models.PROTECT,
27 related_name="locations",
28 )
30 def __str__(self):
31 if self.country:
32 return "{} / {}".format(self.name, self.country)
33 else:
34 return "%s" % (self.name)
36 def natural_key(self):
37 return (self.name, str(self.country))
39 @classmethod
40 def get_natural_key_fields(cls):
41 return ["name", "country"]
43 @classmethod
44 def get_natural_key_info(cls):
45 return [("name", None), ("country", None)]
47 def get_absolute_url(self):
49 return reverse("%s:detail" % app_label, kwargs={"pk": self.pk})
51 class Meta:
52 db_table = "{}_{}".format("sm", app_label)
53 constraints = [
54 models.UniqueConstraint(
55 fields=["name", "country", "group"],
56 name="unique_sm_location_name_country_group",
57 )
58 ]