initial commit. displays simple hierarchy and lists of models. includes fixtures for initial data.

This commit is contained in:
2021-11-07 14:05:07 -06:00
parent a253c38bf0
commit 0f5c7d27e6
54 changed files with 1398 additions and 0 deletions

0
events/__init__.py Normal file
View File

7
events/admin.py Normal file
View File

@@ -0,0 +1,7 @@
from django.contrib import admin
from .models import Event, Availability
# Register your models here.
admin.site.register(Event)
admin.site.register(Availability)

6
events/apps.py Normal file
View File

@@ -0,0 +1,6 @@
from django.apps import AppConfig
class EventsConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'events'

View File

@@ -0,0 +1,245 @@
- model: events.event
pk: 1
fields:
start: '2020-08-24T16:00:01'
away_team_id: '1'
home_team_id: '7'
venue_id: '15'
- model: events.event
pk: 2
fields:
start: '2020-08-24T19:00:02'
away_team_id: '7'
home_team_id: '1'
venue_id: '4'
- model: events.event
pk: 3
fields:
start: '2020-08-24T22:00:01'
away_team_id: '12'
home_team_id: '1'
venue_id: '4'
- model: events.event
pk: 4
fields:
start: '2020-08-25T00:00:01'
away_team_id: '12'
home_team_id: '1'
venue_id: '4'
- model: events.event
pk: 5
fields:
start: '2020-08-25T01:00:02'
away_team_id: '1'
home_team_id: '2'
venue_id: '10'
- model: events.event
pk: 6
fields:
start: '2020-08-25T04:00:00'
away_team_id: '6'
home_team_id: '1'
venue_id: '4'
- model: events.event
pk: 7
fields:
start: '2020-08-25T07:00:03'
away_team_id: '1'
home_team_id: '6'
venue_id: '8'
- model: events.event
pk: 8
fields:
start: '2020-08-25T10:00:03'
away_team_id: '11'
home_team_id: '1'
venue_id: '4'
- model: events.event
pk: 9
fields:
start: '2020-08-25T13:00:01'
away_team_id: '7'
home_team_id: '1'
venue_id: '4'
- model: events.event
pk: 10
fields:
start: '2020-08-25T16:00:00'
away_team_id: '1'
home_team_id: '7'
venue_id: '15'
- model: events.event
pk: 11
fields:
start: '2020-08-25T19:00:03'
away_team_id: '1'
home_team_id: '16'
venue_id: '24'
- model: events.event
pk: 12
fields:
start: '2020-08-26T00:00:03'
away_team_id: '6'
home_team_id: '1'
venue_id: '4'
- model: events.event
pk: 13
fields:
start: '2020-08-26T01:00:01'
away_team_id: '1'
home_team_id: '12'
venue_id: '20'
- model: events.event
pk: 14
fields:
start: '2020-08-26T04:00:01'
away_team_id: '1'
home_team_id: '2'
venue_id: '10'
- model: events.event
pk: 15
fields:
start: '2020-08-26T07:00:02'
away_team_id: '1'
home_team_id: '4'
venue_id: '23'
- model: events.event
pk: 16
fields:
start: '2020-08-26T13:00:02'
away_team_id: '11'
home_team_id: '1'
venue_id: '4'
- model: events.event
pk: 17
fields:
start: '2020-08-26T16:00:00'
away_team_id: '15'
home_team_id: '1'
venue_id: '4'
- model: events.event
pk: 18
fields:
start: '2020-08-26T19:00:03'
away_team_id: '16'
home_team_id: '1'
venue_id: '4'
- model: events.event
pk: 19
fields:
start: '2020-08-27T00:00:02'
away_team_id: '11'
home_team_id: '1'
venue_id: '4'
- model: events.event
pk: 20
fields:
start: '2020-08-27T01:00:00'
away_team_id: '15'
home_team_id: '1'
venue_id: '4'
- model: events.event
pk: 21
fields:
start: '2020-08-27T14:00:02'
away_team_id: '1'
home_team_id: '2'
venue_id: '10'
- model: events.event
pk: 22
fields:
start: '2020-08-27T17:00:01'
away_team_id: '7'
home_team_id: '1'
venue_id: '4'
- model: events.event
pk: 23
fields:
start: '2020-08-27T23:00:02'
away_team_id: '1'
home_team_id: '7'
venue_id: '15'
- model: events.event
pk: 24
fields:
start: '2020-08-28T00:00:02'
away_team_id: '1'
home_team_id: '7'
venue_id: '15'
- model: events.event
pk: 25
fields:
start: '2021-10-26T17:12:48'
away_team_id: '1'
home_team_id: '7'
venue_id: '15'
- model: events.event
pk: 26
fields:
start: '2020-08-28T05:00:05'
away_team_id: '1'
home_team_id: '20'
venue_id: '21'
- model: events.event
pk: 27
fields:
start: '2020-08-28T08:00:02'
away_team_id: '1'
home_team_id: '12'
venue_id: '20'
- model: events.event
pk: 28
fields:
start: '2020-08-28T11:00:06'
away_team_id: '1'
home_team_id: '11'
venue_id: '16'
- model: events.event
pk: 29
fields:
start: '2020-08-28T14:00:02'
away_team_id: '1'
home_team_id: '4'
venue_id: '23'
- model: events.event
pk: 30
fields:
start: '2020-08-28T17:00:05'
away_team_id: '1'
home_team_id: '6'
venue_id: '8'
- model: events.event
pk: 31
fields:
start: '2020-08-28T23:00:09'
away_team_id: '19'
home_team_id: '1'
venue_id: '4'
- model: events.event
pk: 32
fields:
start: '2020-08-29T00:00:05'
away_team_id: '19'
home_team_id: '1'
venue_id: '4'
- model: events.event
pk: 33
fields:
start: '2020-08-29T02:00:02'
away_team_id: '6'
home_team_id: '1'
venue_id: '4'
- model: events.event
pk: 34
fields:
start: '2020-08-29T05:00:06'
away_team_id: '15'
home_team_id: '1'
venue_id: '4'
- model: events.event
pk: 35
fields:
start: '2020-08-29T13:00:06'
away_team_id: '8'
home_team_id: '1'
venue_id: '4'

View File

@@ -0,0 +1,60 @@
# Generated by Django 3.2.6 on 2021-11-07 17:43
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('venues', '0001_initial'),
('teams', '0001_initial'),
('players', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Event',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('start', models.DateTimeField(null=True)),
('away_team', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='away_team', to='teams.team')),
('home_team', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='home_team', to='teams.team')),
('venue', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='venues.venue')),
],
),
migrations.CreateModel(
name='Season',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=50)),
],
),
migrations.CreateModel(
name='Positioning',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('position', models.CharField(choices=[('P', 'P'), ('C', 'C'), ('1B', '1B'), ('2B', '2B'), ('3B', '3B'), ('SS', 'SS'), ('LF', 'LF'), ('CF', 'CF'), ('RF', 'RF'), ('DH', 'DH'), ('EH', 'EH')], default=None, max_length=2, null=True)),
('order', models.IntegerField(default=None, null=True)),
('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='events.event')),
('player', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='players.player')),
],
options={
'unique_together': {('player', 'event')},
},
),
migrations.CreateModel(
name='Availability',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('available', models.CharField(choices=[('Yes', 'YES'), ('No', 'NO'), ('Maybe', 'MAY'), ('Unknown', 'UNK')], default='UNK', max_length=7)),
('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='events.event')),
('player', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='players.player')),
],
options={
'unique_together': {('event', 'player')},
},
),
]

View File

@@ -0,0 +1,17 @@
# Generated by Django 3.2.6 on 2021-11-07 18:39
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('events', '0001_initial'),
]
operations = [
migrations.AlterModelOptions(
name='availability',
options={'verbose_name_plural': 'availabilities'},
),
]

View File

56
events/models.py Normal file
View File

@@ -0,0 +1,56 @@
from django.db import models
from venues.models import Venue
from teams.models import Team
from players.models import Player, StatLine
class Event(models.Model):
start = models.DateTimeField(null=True)
venue = models.ForeignKey(Venue, null=True, on_delete=models.CASCADE)
home_team = models.ForeignKey(Team, null=True,on_delete=models.CASCADE, related_name="home_team")
away_team = models.ForeignKey(Team, null=True,on_delete=models.CASCADE, related_name="away_team")
def __str__(self):
return f"{self.start:%Y-%m-%d %H:%M}"
class Availability(models.Model):
event = models.ForeignKey(Event, on_delete=models.CASCADE)
player = models.ForeignKey(Player, on_delete=models.CASCADE)
choices = [
('Yes', 'YES'),
('No', 'NO'),
('Maybe', 'MAY'),
('Unknown', 'UNK')
]
available = models.CharField(choices=choices, default='UNK',max_length = 7)
def __str__(self):
return f"{self.event}; {self.player}; {self.available}"
class Meta:
unique_together = ('event', 'player',)
verbose_name_plural = "availabilities"
class Positioning(models.Model):
player = models.ForeignKey(Player, on_delete=models.CASCADE)
event = models.ForeignKey(Event, on_delete=models.CASCADE)
positions = [
('P', 'P'),
('C', 'C'),
('1B', '1B'),
('2B', '2B'),
('3B', '3B'),
('SS', 'SS'),
('LF', 'LF'),
('CF', 'CF'),
('RF', 'RF'),
('DH','DH'),
('EH','EH')
]
position = models.CharField(choices=positions, default=None, max_length=2, null=True)
order = models.IntegerField(default=None, null=True)
class Meta:
unique_together = ('player', 'event',)
class Season(models.Model):
name = models.CharField(max_length=50)

View File

@@ -0,0 +1,15 @@
{% load bootstrap5 %}
{% bootstrap_css %}
{% bootstrap_javascript %}
<Title>Schedule</Title>
<h1>Schedule</h1>
<ol>
{% for event in events %}
<li>
{{ event.away_team.name }} vs. {{ event.home_team.name }} <br>
{{ event.start|date:"l, F j, Y g:i A" }} <br>
{{ event.venue.name }}
</li>
{% endfor %}
</ol>

10
events/urls.py Normal file
View File

@@ -0,0 +1,10 @@
from django.contrib import admin
from django.urls import path, include
from . import views
urlpatterns = [
path('', views.root, name="root"),
path('schedule', views.schedule, name="schedule")
]

9
events/views.py Normal file
View File

@@ -0,0 +1,9 @@
from django.shortcuts import render, redirect
from .models import Event
def root(request):
return redirect('/events/schedule')
def schedule(request):
events = Event.objects.all()
return render(request, 'events/schedule.html', {'events': events})