Source code for jangle.models.regions

from django.db import models

from .languages import ISOLanguage


[docs]class Region(models.Model): names: "models.manager.RelatedManager[RegionName]" """"""
[docs] class Tier(models.IntegerChoices): GLOBAL = 0, "global" REGIONAL = 1, "regional" CONTINENTAL = 2, "continental" SUB_REGIONAL = 3, "sub-regional" INTERMEDIARY = 4, "intermediary" COUNTRY = 5, "country or area"
tier = models.PositiveSmallIntegerField(choices=Tier.choices) """Classification.""" no = models.PositiveSmallIntegerField( "ISO 3166-1 numeric / UN M.49 code", unique=True, ) """ISO 3166-1 numeric / UN M.49 code.""" parent = models.ForeignKey( "self", null=True, on_delete=models.CASCADE, ) """Parent region encompassing this one, if existing.""" @property def no_str(self) -> str: """Formatted string of numeric code.""" return "{:03d}".format(self.no)
[docs] def get_name(self, iso_language: ISOLanguage) -> str: return self.names.get(iso_language=iso_language).name
def __str__(self) -> str: return self.get_name(ISOLanguage.objects.get_from_ietf("en"))
[docs]class RegionName(models.Model): region = models.ForeignKey( Region, related_name="names", on_delete=models.CASCADE, ) """""" name = models.TextField(max_length=150) """""" iso_lang = models.ForeignKey( ISOLanguage, on_delete=models.PROTECT, ) """ISO language.""" class Meta: unique_together = ("region", "iso_lang")
[docs]class ISORegion(models.Model): """ISO 3166 region.""" region = models.OneToOneField( Region, related_name="iso", on_delete=models.CASCADE, ) """""" alpha_2 = models.CharField( "ISO 3166-1 alpha-2 code", unique=True, max_length=2, ) """ISO 3166-1 alpha-2 code.""" alpha_3 = models.CharField( "ISO 3166-1 alpha-3 code", unique=True, max_length=3, ) """ISO 3166-1 alpha-3 code.""" in_ldc = models.BooleanField( "Least Developed Countries", default=False, ) """In UN Least Developed Countries (LDC).""" in_lldc = models.BooleanField( "Land Locked Developing Countries", default=False, ) """In UN Land Locked Developing Countries (LLDC).""" in_sids = models.BooleanField( "Small Island Developing States", default=False, ) """In UN Small Island Developing States (SIDS).""" def __str__(self) -> str: return str(self.region) class Meta: verbose_name = "ISO 3166 Region"