boatmovers init
This commit is contained in:
0
boatmovers/__init__.py
Normal file
0
boatmovers/__init__.py
Normal file
36
boatmovers/admin.py
Normal file
36
boatmovers/admin.py
Normal file
@@ -0,0 +1,36 @@
|
||||
from django.contrib import admin
|
||||
from.models import Athlete, Crew, Race, Result
|
||||
# Register your models here.
|
||||
|
||||
class AthleteInline(admin.StackedInline):
|
||||
model = Athlete
|
||||
|
||||
class AthleteAdmin(admin.ModelAdmin):
|
||||
list_display = ('first_name', 'last_name', 'birth_year')
|
||||
|
||||
class CrewInline(admin.StackedInline):
|
||||
model = Athlete
|
||||
|
||||
class CrewAdmin(admin.ModelAdmin):
|
||||
list_display = ('name',)
|
||||
|
||||
class RaceInline(admin.StackedInline):
|
||||
model = Race
|
||||
|
||||
class RaceAdmin(admin.ModelAdmin):
|
||||
list_display = ('name',)
|
||||
|
||||
class ResultInline(admin.StackedInline):
|
||||
model = Result
|
||||
|
||||
class ResultAdmin(admin.ModelAdmin):
|
||||
list_display = ('race','crew','order')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
admin.site.register(Athlete, AthleteAdmin)
|
||||
admin.site.register(Crew, CrewAdmin)
|
||||
admin.site.register(Race, RaceAdmin)
|
||||
admin.site.register(Result, ResultAdmin)
|
||||
6
boatmovers/apps.py
Normal file
6
boatmovers/apps.py
Normal file
@@ -0,0 +1,6 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class BoatmoversConfig(AppConfig):
|
||||
default_auto_field = 'django.db.models.BigAutoField'
|
||||
name = 'boatmovers'
|
||||
58
boatmovers/migrations/0001_initial.py
Normal file
58
boatmovers/migrations/0001_initial.py
Normal file
@@ -0,0 +1,58 @@
|
||||
# Generated by Django 3.2.12 on 2022-06-22 17:41
|
||||
|
||||
import boatmovers.models
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Athlete',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('first_name', models.CharField(max_length=200)),
|
||||
('last_name', models.CharField(max_length=200)),
|
||||
('club', models.CharField(max_length=200)),
|
||||
('trueskill_mu', models.FloatField(default=25.0)),
|
||||
('trueskill_sigma', models.FloatField(default=8.333)),
|
||||
('birth_year', models.IntegerField(default=1972)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Crew',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('athletes', models.ManyToManyField(to='boatmovers.Athlete')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Race',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('date', models.DateField(default=boatmovers.models.current_day)),
|
||||
('crew_size', models.IntegerField(default=1)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Result',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('order', models.PositiveIntegerField()),
|
||||
('crew', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='boatmovers.crew')),
|
||||
('race', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='boatmovers.race')),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='race',
|
||||
name='resultlist',
|
||||
field=models.ManyToManyField(through='boatmovers.Result', to='boatmovers.Crew'),
|
||||
),
|
||||
]
|
||||
17
boatmovers/migrations/0002_alter_athlete_unique_together.py
Normal file
17
boatmovers/migrations/0002_alter_athlete_unique_together.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# Generated by Django 3.2.12 on 2022-06-22 17:49
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('boatmovers', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterUniqueTogether(
|
||||
name='athlete',
|
||||
unique_together={('first_name', 'last_name', 'birth_year')},
|
||||
),
|
||||
]
|
||||
28
boatmovers/migrations/0003_auto_20220622_1753.py
Normal file
28
boatmovers/migrations/0003_auto_20220622_1753.py
Normal file
@@ -0,0 +1,28 @@
|
||||
# Generated by Django 3.2.12 on 2022-06-22 17:53
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('boatmovers', '0002_alter_athlete_unique_together'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='race',
|
||||
name='name',
|
||||
field=models.CharField(default='Race1', max_length=200),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='race',
|
||||
name='resulturl',
|
||||
field=models.URLField(null=True),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='race',
|
||||
unique_together={('date', 'name')},
|
||||
),
|
||||
]
|
||||
0
boatmovers/migrations/__init__.py
Normal file
0
boatmovers/migrations/__init__.py
Normal file
48
boatmovers/models.py
Normal file
48
boatmovers/models.py
Normal file
@@ -0,0 +1,48 @@
|
||||
from django.db import models
|
||||
import datetime
|
||||
from django.utils import timezone
|
||||
|
||||
def current_day(ttz=None):
|
||||
if ttz is None:
|
||||
return (datetime.datetime.now(tz=timezone.utc)).date()
|
||||
return datetime.datetime.utcnow().astimezone(pytz.timezone(ttz)).date()
|
||||
|
||||
# Create your models here.
|
||||
class Athlete(models.Model):
|
||||
first_name = models.CharField(max_length=200)
|
||||
last_name = models.CharField(max_length=200)
|
||||
club = models.CharField(max_length=200)
|
||||
trueskill_mu = models.FloatField(default=25.)
|
||||
trueskill_sigma = models.FloatField(default=8.333)
|
||||
birth_year = models.IntegerField(default=1972)
|
||||
|
||||
class Meta:
|
||||
unique_together = ('first_name','last_name','birth_year')
|
||||
|
||||
def __str__(self):
|
||||
return u'{f} {l}'.format(f = self.first_name, l=self.last_name)
|
||||
|
||||
class Crew(models.Model):
|
||||
athletes = models.ManyToManyField(Athlete)
|
||||
name = models.CharField(max_length=200)
|
||||
|
||||
def __str__(self):
|
||||
return u'{n}'.format(n=self.name)
|
||||
|
||||
class Race(models.Model):
|
||||
name = models.CharField(max_length=200)
|
||||
resulturl = models.URLField(null=True)
|
||||
date = models.DateField(default=current_day)
|
||||
resultlist = models.ManyToManyField(Crew,through='Result')
|
||||
crew_size = models.IntegerField(default=1)
|
||||
|
||||
class Meta:
|
||||
unique_together = ('date','name')
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class Result(models.Model):
|
||||
crew = models.ForeignKey(Crew, on_delete=models.CASCADE)
|
||||
race = models.ForeignKey(Race, on_delete=models.CASCADE)
|
||||
order = models.PositiveIntegerField()
|
||||
3
boatmovers/tests.py
Normal file
3
boatmovers/tests.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
3
boatmovers/views.py
Normal file
3
boatmovers/views.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
||||
Reference in New Issue
Block a user