74 lines
2.5 KiB
Python
74 lines
2.5 KiB
Python
|
from django.db import models
|
||
|
|
||
|
|
||
|
class Country(models.Model):
|
||
|
"""Classe représentant les pays (basée sur la liste ISO 3166 de 2015).
|
||
|
|
||
|
References:
|
||
|
https://fr.wikipedia.org/wiki/ISO_3166
|
||
|
"""
|
||
|
|
||
|
class Meta:
|
||
|
verbose_name = "Country"
|
||
|
verbose_name_plural = "Countries"
|
||
|
|
||
|
name = models.CharField(max_length=255, verbose_name="English name")
|
||
|
nationality = models.CharField(max_length=255, verbose_name="Nationality")
|
||
|
iso2 = models.CharField(max_length=2)
|
||
|
iso3 = models.CharField(max_length=3)
|
||
|
isonum = models.PositiveSmallIntegerField()
|
||
|
|
||
|
def __str__(self):
|
||
|
return "%s (%s)" % (self.name, self.iso2)
|
||
|
|
||
|
|
||
|
class Place(models.Model):
|
||
|
"""
|
||
|
Représente un lieu. En plus de l'adresse, un lieu est spécifié par un nombre
|
||
|
de kilomètres et une durée de trajet. Pour faciliter les filtres, un lieu peut être
|
||
|
actif ou non.
|
||
|
"""
|
||
|
|
||
|
class Meta:
|
||
|
verbose_name = "Place"
|
||
|
verbose_name_plural = "Places"
|
||
|
|
||
|
name = models.CharField(max_length=255, verbose_name="Name")
|
||
|
address = models.CharField(max_length=255, verbose_name="Address")
|
||
|
postal = models.PositiveIntegerField(verbose_name="Postal code")
|
||
|
city = models.CharField(max_length=255, verbose_name="City")
|
||
|
country = models.ForeignKey(
|
||
|
Country, verbose_name="Country", on_delete=models.CASCADE, default=None
|
||
|
)
|
||
|
# nbkm = models.PositiveIntegerField(blank=True, null=True, help_text="in km")
|
||
|
# timing = models.PositiveIntegerField(blank=True, null=True, help_text="in minutes")
|
||
|
is_active = models.BooleanField(default=1, verbose_name="Active")
|
||
|
|
||
|
def __str__(self):
|
||
|
return "%s (%s)" % (self.name, self.city if self.city else "?")
|
||
|
|
||
|
|
||
|
class Club(models.Model):
|
||
|
"""
|
||
|
Représente un club. Un club est associé à un lieu. Pour faciliter les filtres,
|
||
|
un club peut être actif ou non.
|
||
|
|
||
|
.. todo:: Un club peut avoir plusieurs salle
|
||
|
et une salle peut-être louée par plusieurs clubs... M2M ?
|
||
|
"""
|
||
|
|
||
|
class Meta:
|
||
|
verbose_name = "Club"
|
||
|
verbose_name_plural = "Clubs"
|
||
|
|
||
|
# place=models.ManyToManyField(Place, through="clubs")
|
||
|
place = models.ForeignKey(
|
||
|
Place, verbose_name="Place", on_delete=models.CASCADE, default=None
|
||
|
)
|
||
|
name = models.CharField(max_length=255, verbose_name="Name")
|
||
|
acronym = models.CharField(max_length=6, verbose_name="Acronym")
|
||
|
is_active = models.BooleanField(default=1, verbose_name="Active")
|
||
|
|
||
|
def __str__(self):
|
||
|
return "%s (%s)" % (self.name, self.place.city if self.place.city else "?")
|