Merge branch 'add_availabilities'

This commit is contained in:
2021-11-14 19:59:02 -06:00
11 changed files with 9348 additions and 27 deletions

View File

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

View File

@@ -0,0 +1,16 @@
# Generated by Django 3.2.6 on 2021-11-14 23:59
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('events', '0003_delete_positioning'),
]
operations = [
migrations.DeleteModel(
name='Availability',
),
]

View File

@@ -12,23 +12,5 @@ class Event(models.Model):
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 Season(models.Model):
name = models.CharField(max_length=50)

View File

@@ -1,3 +1,6 @@
from django.contrib import admin
from .models import Availability, Positioning
# Register your models here.
admin.site.register(Availability)
admin.site.register(Positioning)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,29 @@
# Generated by Django 3.2.6 on 2021-11-14 23:59
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('players', '0003_player_team'),
('events', '0004_delete_availability'),
('lineups', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Availability',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('available', models.IntegerField(choices=[(2, 'Yes'), (-1, 'No'), (1, 'MAY'), (0, 0)], default=0, 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={
'verbose_name_plural': 'availabilities',
'unique_together': {('event', 'player')},
},
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 3.2.6 on 2021-11-15 00:32
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('lineups', '0002_availability'),
]
operations = [
migrations.AlterField(
model_name='availability',
name='available',
field=models.IntegerField(choices=[(2, 'Yes'), (0, 'No'), (1, 'MAY'), (-1, 0)], default=-1),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 3.2.6 on 2021-11-15 00:40
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('lineups', '0003_alter_availability_available'),
]
operations = [
migrations.AlterField(
model_name='availability',
name='available',
field=models.IntegerField(choices=[(2, 'Yes'), (0, 'No'), (1, 'Maybe'), (-1, 'Unknown')], default=-1),
),
]

View File

@@ -24,3 +24,26 @@ class Positioning(models.Model):
class Meta:
unique_together = ('player', 'event',)
class Availability(models.Model):
YES = 2
MAYBE = 1
NO = 0
UNKNOWN = -1
event = models.ForeignKey(Event, on_delete=models.CASCADE)
player = models.ForeignKey(Player, on_delete=models.CASCADE)
choices = [
(YES, 'Yes'),
(NO, 'No'),
(MAYBE, 'Maybe'),
(UNKNOWN, 'Unknown')
]
available = models.IntegerField(choices=choices, default=UNKNOWN)
def __str__(self):
return f"{self.event}; {self.player}; {self.available}"
class Meta:
unique_together = ('event', 'player',)
verbose_name_plural = "availabilities"

View File

@@ -28,7 +28,7 @@
<div class="col-6">
<ul class="list-group">
{% for player in players %}
<li class="list-group-item">{{ player.first_name }} {{ player.last_name }}</li>
<li class="list-group-item">{{ player.first_name }} {{ player.last_name }} - {{ player.available }}</li>
{% endfor %}
</ul>
</div>

View File

@@ -1,11 +1,9 @@
from django.shortcuts import render, redirect, get_object_or_404
from django.forms import formset_factory
from .models import Positioning
from .forms import PositioningFormSet
from django.http import HttpResponse
from django import forms
from events.models import Event
from players.models import Player
from django.forms.models import model_to_dict
# Create your views here.
def edit(request, event_id):
@@ -31,7 +29,16 @@ def edit(request, event_id):
return render(request, 'success.html', {'call_back':'edit lineup','id':event_id}, status=200)
# return render(request, 'success.html', {'call_back':'schedule'})
event = Event.objects.get(id=event_id)
players = Player.objects.all()
players = Player.objects.all().prefetch_related('availability_set')
players = [
{
**model_to_dict(player),
'available':player.availability_set.get(event_id=event_id).get_available_display(),
'available_value': player.availability_set.get(event_id=event_id).available
}
for player in players
]
players.sort(key=lambda d: d['available_value'], reverse = True)
qset = Positioning.objects.filter(event_id=event_id, order__isnull = False)
formset = PositioningFormSet(queryset=qset)
for form in formset: