fixed lineup submission and added message display

This commit is contained in:
2021-12-11 11:15:59 -06:00
parent 1b7a291b5d
commit e0764ce479
4 changed files with 40 additions and 1 deletions

View File

@@ -25,6 +25,9 @@ class Positioning(models.Model):
class Meta: class Meta:
unique_together = ('player', 'event',) unique_together = ('player', 'event',)
def __str__(self):
return f"{self.player}; {self.event};"
class Availability(models.Model): class Availability(models.Model):
YES = 2 YES = 2
MAYBE = 1 MAYBE = 1

View File

@@ -26,6 +26,7 @@
{% endblock %}{% endwith %} {% endblock %}{% endwith %}
{% block content %} {% block content %}
{% include 'messages.html' %}
<div id="pills-tabContent" class="container-fluid tab-content my-1" data-toggle="tab"> <div id="pills-tabContent" class="container-fluid tab-content my-1" data-toggle="tab">
<div id="event-details" class="tab-pane show active" role="tabpanel" aria-labelledby="event-details-tab"> <div id="event-details" class="tab-pane show active" role="tabpanel" aria-labelledby="event-details-tab">
<div> <div>

View File

@@ -5,6 +5,8 @@ from events.models import Event
from players.models import Player from players.models import Player
from django.db.models import Case, When from django.db.models import Case, When
from django.urls import reverse from django.urls import reverse
from django.contrib import messages
from django.http import HttpResponse
def queryset_from_ids(Model, id_list): def queryset_from_ids(Model, id_list):
#https://stackoverflow.com/questions/4916851/django-get-a-queryset-from-array-of-ids-in-specific-order #https://stackoverflow.com/questions/4916851/django-get-a-queryset-from-array-of-ids-in-specific-order
@@ -18,6 +20,7 @@ def edit(request, event_id):
if request.method == 'POST': if request.method == 'POST':
# create a form instance and populate it with data from the request: # create a form instance and populate it with data from the request:
formset = PositioningFormSet(request.POST) formset = PositioningFormSet(request.POST)
is_valid = [f.is_valid() for f in formset]
for form in formset: for form in formset:
if form.is_valid(): if form.is_valid():
# process the data in form.cleaned_data as required # process the data in form.cleaned_data as required
@@ -33,8 +36,18 @@ def edit(request, event_id):
positioning = Positioning.objects.create(**form.cleaned_data, event_id=event_id) positioning = Positioning.objects.create(**form.cleaned_data, event_id=event_id)
did_create = True did_create = True
else: else:
messages.error(request, f'Error submitting lineup. {form.instance} {form.errors}')
pass pass
return render(request, 'success.html', {'call_back':'edit lineup','id':event_id, 'errors':[error for error in formset.errors if error]}, status=200) if (True in is_valid) and (False in is_valid):
messages.warning(request, 'Lineup partially submitted.')
elif (True in is_valid):
messages.success(request, 'Lineup submitted successfully.')
elif (True not in is_valid):
messages.error(request, f'Error submitting lineup.')
else:
messages.error(request, f'Error submitting lineup.')
# return HttpResponse(status=204)
# return render(request, 'success.html', {'call_back':'edit lineup','id':event_id, 'errors':[error for error in formset.errors if error]}, status=200)
previous_event = Event.objects.filter(id=event_id-1).first() previous_event = Event.objects.filter(id=event_id-1).first()
event = Event.objects.get(id=event_id) event = Event.objects.get(id=event_id)

22
templates/messages.html Normal file
View File

@@ -0,0 +1,22 @@
{% if messages %}
{% for message in messages %}
{% if message.tags == 'success' %}
<div class="alert alert-success alert-dismissible fade show" role="alert">
<i class="bi bi-hand-thumbs-up"></i> {{ message|safe}}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{% endif %}
{% if message.tags == 'error' %}
<div class="alert alert-danger alert-dismissible fade show" role="alert">
<i class="bi bi-hand-thumbs-down"></i> {{ message|safe}}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{% endif %}
{% if message.tags == 'warning' %}
<div class="alert alert-warning alert-dismissible fade show" role="alert">
<i class="bi bi-exclamation-triangle"></i> {{ message|safe}}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{% endif %}
{% endfor %}
{% endif %}