You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

50 lines
1.9 KiB

import random
from django.db import models
def random_string():
value = str(random.randint(1000, 9999))
return value
class Zone(models.Model):
ETATS = (
('L', 'Libre'),
('A', 'Attibuée'),
('O', 'Occupée'),
)
nom = models.CharField(max_length=50)
etat = models.CharField(max_length=1, choices=ETATS, default = 'L')
code = models.IntegerField(default = random_string, unique=True)#code pour accéder à la zone
mdp = models.IntegerField(default = random_string, unique=True)#code pour valider la zone
description = models.TextField(default = '')
def __str__(self):
return self.nom+" : "+self.get_etat_display()+" ("+str(self.code)+")"
class Distance(models.Model):
zone1 = models.ForeignKey(Zone, related_name='zone1',on_delete=models.CASCADE)
zone2 = models.ForeignKey(Zone, related_name='zone2',on_delete=models.CASCADE)
distance = models.IntegerField()
class Meta:
unique_together = (('zone1','zone2'),)
def __str__(self):
return self.zone1.nom+" -> "+self.zone2.nom+" : "+str(self.distance)
class Equipe(models.Model):
nom = models.CharField(max_length=50)
code = models.IntegerField(default = random_string, unique=True)
start_time = models.TimeField(null=True, blank=True)
end_time = models.TimeField(null=True, blank=True)
def __str__(self):
return self.nom+" ("+str(self.code)+")"
class Challenge(models.Model):
equipe = models.ForeignKey(Equipe, on_delete=models.CASCADE)
zone = models.ForeignKey(Zone, on_delete=models.CASCADE)
rank = models.IntegerField(default = 1)#rang du challenge dans la liste
start_time = models.TimeField(null=True, blank=True)
end_time = models.TimeField(null=True, blank=True)
def __str__(self):
return self.equipe.nom+" -> salle : "+self.zone.nom+" rang : "+str(self.rank)
class Settings(models.Model):
nb_challenges = models.IntegerField(default = 1)