Merge branch 'master' into lineup_as_table

This commit is contained in:
2021-11-15 09:22:20 -06:00
29 changed files with 9808 additions and 210 deletions

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

@@ -23,4 +23,27 @@ class Positioning(models.Model):
order = models.IntegerField(default=None, null=True)
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

@@ -7,7 +7,8 @@
{{ event.venue.name }} <br>
<div class="container">
<div class="row">
<div class="col-6">
<div class="col-md-6">
<h6>Lineup</h6>
{# <ul class="list-group">#}
<form action="{% url 'edit lineup' event_id=event.id%}" method="post">
@@ -35,10 +36,23 @@
</form>
</div>
<div class="col-6">
<div class="col-md-6">
<h6>Players</h6>
<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">
{% if player.availability.available == 2 %}
<img class="bg-success p-2 rounded-circle" width="5" height="5"><span class="visually-hidden">Yes</span></img>
{% elif player.availability.available == 1%}
<img class="bg-info p-2 rounded-circle" width="5" height="5"><span class="visually-hidden">Maybe</span></span>
{% elif player.availability.available == 0%}
<img class="bg-danger p-2 rounded-circle" width="5" height="5"><span class="visually-hidden">No</span></span>
{% elif player.availability.available == -1%}
<img class="bg-secondary p-2 rounded-circle" width="5" height="5"><span class="visually-hidden">Unknown</span></span>
{% endif %}
{{ player.first_name }} {{ player.last_name }}
<code><small>{{ player.statline }}</small></code>
</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,17 @@ 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', 'statline_set')
players = [
{
**model_to_dict(player),
'availability':player.availability_set.get(event_id=event_id),
# 'available_value': player.availability_set.get(event_id=event_id).available,
'statline': player.statline_set.get(player_id=player.id)
}
for player in players
]
players.sort(key=lambda d: d['availability'].available, reverse = True)
qset = Positioning.objects.filter(event_id=event_id, order__isnull = False)
formset = PositioningFormSet(queryset=qset)
for form in formset: