add
This commit is contained in:
@@ -25,16 +25,20 @@ class Athlete(models.Model):
|
||||
trueskill_exposed = models.FloatField(default=0)
|
||||
birth_year = models.IntegerField(default=1972)
|
||||
gender = models.CharField(max_length=200, choices=(('m','M'),('f','F')))
|
||||
dummy = models.BooleanField(default=False)
|
||||
|
||||
class Meta:
|
||||
unique_together = ('first_name','last_name','birth_year')
|
||||
unique_together = ('first_name','last_name','birth_year','gender')
|
||||
|
||||
def __str__(self):
|
||||
return u'{f} {l}'.format(f = self.first_name, l=self.last_name)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
name = '{f} {l}'.format(f = self.first_name, l = self.last_name)
|
||||
for a in Athlete.objects.filter(gender=self.gender):
|
||||
athletes = Athlete.objects.filter(gender=self.gender)
|
||||
if self.pk is not None:
|
||||
athletes = athletes.exclude(pk=self.pk)
|
||||
for a in athletes:
|
||||
aname = '{f} {l}'.format(f = a.first_name, l = a.last_name)
|
||||
if name == aname:
|
||||
raise ValidationError("Duplicate:{id}".format(id=a.id))
|
||||
@@ -78,6 +82,7 @@ class Race(models.Model):
|
||||
choices=((1,1),(2,2),(4,4),(8,8)))
|
||||
verified = models.BooleanField(default=False)
|
||||
processed = models.BooleanField(default=False)
|
||||
gender = models.CharField(max_length=200,choices=(('m','M'),('f','F')),default='m')
|
||||
|
||||
class Meta:
|
||||
unique_together = ('date','name')
|
||||
@@ -106,8 +111,10 @@ class Race(models.Model):
|
||||
|
||||
super(Race, self).save(*args, **kwargs)
|
||||
|
||||
def validate(self):
|
||||
def validate(self, verbose=False):
|
||||
if len(self.results.all()) < 2:
|
||||
if verbose:
|
||||
print('False: Less than 2 results')
|
||||
self.verified = False
|
||||
self.save()
|
||||
return False
|
||||
@@ -115,11 +122,15 @@ class Race(models.Model):
|
||||
l = self.results.all()[0].crew.size()
|
||||
for result in self.results.all():
|
||||
if result.crew.size() != l:
|
||||
if verbose:
|
||||
print('False: crew {c} has different crew size'.format(c=result.crew))
|
||||
self.verified = False
|
||||
self.save()
|
||||
return False
|
||||
|
||||
if l not in [1,2,4,8]:
|
||||
if verbose:
|
||||
print('False: Crew size not in 1, 2, 4, or 8')
|
||||
self.verified = False
|
||||
self.save()
|
||||
return False
|
||||
@@ -130,14 +141,19 @@ class Race(models.Model):
|
||||
for result in results:
|
||||
crews.append(result.crew.id)
|
||||
for athlete in result.crew.athletes.all():
|
||||
athletes.append(athlete.id)
|
||||
if not athlete.dummy:
|
||||
athletes.append(athlete.id)
|
||||
|
||||
if len(crews) != len(set(crews)):
|
||||
if verbose:
|
||||
print('False: Same crew competing twice')
|
||||
self.verified = False
|
||||
self.save()
|
||||
return False
|
||||
|
||||
if len(athletes) != len(set(athletes)):
|
||||
if verbose:
|
||||
print('False: Duplicate athletes')
|
||||
self.verified = False
|
||||
self.save()
|
||||
return False
|
||||
@@ -196,7 +212,7 @@ class Race(models.Model):
|
||||
class raceForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Race
|
||||
fields = ['name','date','resulturl','crew_size']
|
||||
fields = ['name','date','resulturl','crew_size','gender']
|
||||
|
||||
|
||||
class Result(models.Model):
|
||||
|
||||
Reference in New Issue
Block a user