From 1a90df3906110641645dfab2f16ec85ea958164c Mon Sep 17 00:00:00 2001 From: Tony Date: Wed, 10 Nov 2021 22:04:17 -0600 Subject: [PATCH] Add positing and initial data for lineup --- lineups/forms.py | 18 ++++++++++++++++++ lineups/templates/lineups/lineup.html | 4 +++- lineups/views.py | 23 ++++++++++++++++++----- 3 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 lineups/forms.py diff --git a/lineups/forms.py b/lineups/forms.py new file mode 100644 index 0000000..6ebadcb --- /dev/null +++ b/lineups/forms.py @@ -0,0 +1,18 @@ +from django import forms +from .models import Positioning +from django.forms import modelformset_factory +from crispy_forms.helper import FormHelper, Layout + +PositioningFormSet = modelformset_factory(model=Positioning, + fields = ['player', 'position', 'order'], + widgets = { + 'order':forms.NumberInput(attrs={'style':'width:6ch'}) + }) + +# class PositioningFormSet(modelformset_factory): +# class Meta: +# model = Positioning +# fields = ['player', 'position', 'order'] +# widgets = { +# 'order':forms.NumberInput(attrs={'style':'width:6ch'}) +# } diff --git a/lineups/templates/lineups/lineup.html b/lineups/templates/lineups/lineup.html index 4e719d9..e4f4f8a 100644 --- a/lineups/templates/lineups/lineup.html +++ b/lineups/templates/lineups/lineup.html @@ -9,8 +9,10 @@
{#
    #} -
    + + {% csrf_token %} + {{ positionings_formset.management_form }} {% for pos in positionings_formset %}
    diff --git a/lineups/views.py b/lineups/views.py index 37e12ae..46544e3 100644 --- a/lineups/views.py +++ b/lineups/views.py @@ -1,17 +1,30 @@ -from django.shortcuts import render +from django.shortcuts import render, redirect, get_object_or_404 from django.forms import formset_factory -from .forms import PositioningForm +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 # Create your views here. def edit(request, id): + + if request.method == 'POST': + # create a form instance and populate it with data from the request: + formset = PositioningFormSet(request.POST) + for form in formset: + if form.is_valid(): + # process the data in form.cleaned_data as required + # ... + # redirect to a new URL: + new_event, did_create = Positioning.objects.update_or_create(player_id=form['player'].data, event_id=id, defaults=form.cleaned_data) + print (form.cleaned_data) + # return render(request, 'success.html', {'call_back':'schedule'}) event = Event.objects.get(id=id) players = Player.objects.all() - PositioningFormSet = formset_factory(PositioningForm, extra=9) - formset = PositioningFormSet() - print(event) + qset = Positioning.objects.filter(event_id=id, order__isnull = False) + formset = PositioningFormSet(queryset=qset) return render(request, 'lineups/lineup.html', {'title': 'Lineup', 'event': event, 'players': players,