Coverage for places/models.py: 85%

34 statements  

« prev     ^ index     » next       coverage.py v7.5.3, created at 2024-06-10 15:48 +0000

1from django.db import models 

2 

3 

4class Country(models.Model): 

5 name = models.CharField(max_length=250, blank=True) 

6 

7 def __str__(self): 

8 return self.name 

9 

10 

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 ) 

16 

17 def __str__(self): 

18 return "{} ({})".format(self.country, self.name) 

19 

20 

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) 

24 

25 def __str__(self): 

26 return "{} ({})".format(self.region, self.name) 

27 

28 

29class AlternativeName(models.Model): 

30 name = models.CharField(max_length=250, blank=True, help_text="Alternative Name") 

31 

32 def __str__(self): 

33 return self.name 

34 

35 

36class Place(models.Model): 

37 PLACE_TYPES = (("city", "city"), ("country", "country")) 

38 

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 ) 

60 

61 class Meta: 

62 ordering = ["name"] 

63 

64 def __str__(self): 

65 return "{} ({})".format(self.name, self.province)