Merge branch 'add_availabilities'
This commit is contained in:
@@ -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)
|
|
||||||
|
|||||||
16
events/migrations/0004_delete_availability.py
Normal file
16
events/migrations/0004_delete_availability.py
Normal 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',
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -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)
|
||||||
@@ -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
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),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -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"
|
||||||
@@ -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>
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user