Merge branch 'master' into lineup_as_table
This commit is contained in:
@@ -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
29
lineups/migrations/0002_availability.py
Normal file
29
lineups/migrations/0002_availability.py
Normal 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')},
|
||||
},
|
||||
),
|
||||
]
|
||||
18
lineups/migrations/0003_alter_availability_available.py
Normal file
18
lineups/migrations/0003_alter_availability_available.py
Normal 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),
|
||||
),
|
||||
]
|
||||
18
lineups/migrations/0004_alter_availability_available.py
Normal file
18
lineups/migrations/0004_alter_availability_available.py
Normal 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),
|
||||
),
|
||||
]
|
||||
@@ -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"
|
||||
@@ -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>
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user