Coverage for places/models.py: 85%
34 statements
« prev ^ index » next coverage.py v7.5.3, created at 2024-06-10 15:48 +0000
« prev ^ index » next coverage.py v7.5.3, created at 2024-06-10 15:48 +0000
1from django.db import models
4class Country(models.Model):
5 name = models.CharField(max_length=250, blank=True)
7 def __str__(self):
8 return self.name
11class Region(models.Model):
12 name = models.CharField(max_length=250, blank=True)
13 country = models.ForeignKey(
14 Country, blank=True, null=True, on_delete=models.SET_NULL
15 )
17 def __str__(self):
18 return "{} ({})".format(self.country, self.name)
21class Province(models.Model):
22 name = models.CharField(max_length=250, blank=True)
23 region = models.ForeignKey(Region, blank=True, null=True, on_delete=models.SET_NULL)
25 def __str__(self):
26 return "{} ({})".format(self.region, self.name)
29class AlternativeName(models.Model):
30 name = models.CharField(max_length=250, blank=True, help_text="Alternative Name")
32 def __str__(self):
33 return self.name
36class Place(models.Model):
37 PLACE_TYPES = (("city", "city"), ("country", "country"))
39 """Holds information about places."""
40 name = models.CharField(max_length=250, blank=True, help_text="Normalized name")
41 province = models.ForeignKey(
42 Province, blank=True, null=True, on_delete=models.SET_NULL
43 )
44 alternative_name = models.ManyToManyField(
45 AlternativeName, max_length=250, blank=True, help_text="Alternative names"
46 )
47 geonames_id = models.CharField(max_length=50, blank=True, help_text="GND-ID")
48 lat = models.DecimalField(max_digits=20, decimal_places=12, blank=True, null=True)
49 lng = models.DecimalField(max_digits=20, decimal_places=12, blank=True, null=True)
50 part_of = models.ForeignKey(
51 "Place",
52 null=True,
53 blank=True,
54 help_text="A place (country) this place is part of.",
55 on_delete=models.SET_NULL,
56 )
57 place_type = models.CharField(
58 choices=PLACE_TYPES, null=True, blank=True, max_length=50
59 )
61 class Meta:
62 ordering = ["name"]
64 def __str__(self):
65 return "{} ({})".format(self.name, self.province)