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 django.contrib import admin
from .models import Event, Availability from .models import Event
# Register your models here. # Register your models here.
admin.site.register(Event) 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): def __str__(self):
return f"{self.start:%Y-%m-%d %H:%M}" 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): class Season(models.Model):
name = models.CharField(max_length=50) name = models.CharField(max_length=50)

View File

@@ -1,3 +1,6 @@
from django.contrib import admin from django.contrib import admin
from .models import Availability, Positioning
# Register your models here. # 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: class Meta:
unique_together = ('player', 'event',) 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"> <div class="col-6">
<ul class="list-group"> <ul class="list-group">
{% for player in players %} {% 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 %} {% endfor %}
</ul> </ul>
</div> </div>

View File

@@ -1,11 +1,9 @@
from django.shortcuts import render, redirect, get_object_or_404 from django.shortcuts import render, redirect, get_object_or_404
from django.forms import formset_factory
from .models import Positioning from .models import Positioning
from .forms import PositioningFormSet from .forms import PositioningFormSet
from django.http import HttpResponse
from django import forms
from events.models import Event from events.models import Event
from players.models import Player from players.models import Player
from django.forms.models import model_to_dict
# Create your views here. # Create your views here.
def edit(request, event_id): 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':'edit lineup','id':event_id}, status=200)
# return render(request, 'success.html', {'call_back':'schedule'}) # return render(request, 'success.html', {'call_back':'schedule'})
event = Event.objects.get(id=event_id) 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) qset = Positioning.objects.filter(event_id=event_id, order__isnull = False)
formset = PositioningFormSet(queryset=qset) formset = PositioningFormSet(queryset=qset)
for form in formset: for form in formset: