Merge branch 'master' into lineup_as_table
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
{# <ul class="list-group">#}
|
||||
<form action="{% url 'edit lineup' id=event.id%}" method="post">
|
||||
<form action="{% url 'edit lineup' event_id=event.id%}" method="post">
|
||||
|
||||
{# {% csrf_token %}#}
|
||||
{# {{ positionings_formset.management_form }}#}
|
||||
|
||||
@@ -1,3 +1,52 @@
|
||||
from django.test import TestCase
|
||||
from django.test import TestCase, Client
|
||||
from django.test.utils import setup_test_environment
|
||||
from django.urls import reverse
|
||||
from .models import Positioning, Player
|
||||
from .forms import PositioningFormSet
|
||||
|
||||
# Create your tests here.
|
||||
class TestVenueViews(TestCase):
|
||||
fixtures = ['blaseball']
|
||||
|
||||
def test_positioning_list(self):
|
||||
response = self.client.get(reverse('edit lineup', args=[1]))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_positioning_formset(self):
|
||||
event = 1
|
||||
|
||||
sample_data = [
|
||||
# first player positioning
|
||||
(1, Player.objects.get(id=1).id, 'P'),
|
||||
(2, Player.objects.get(id=2).id, 'C'),
|
||||
(3, Player.objects.get(id=3).id, '1B')
|
||||
]
|
||||
data = {}
|
||||
|
||||
for i, (order, player, position) in enumerate(sample_data):
|
||||
data[f'form-{i}-order']=order
|
||||
data[f'form-{i}-player']=player
|
||||
data[f'form-{i}-position'] = position
|
||||
|
||||
management = {
|
||||
'form-INITIAL_FORMS': '0',
|
||||
'form-TOTAL_FORMS': len(sample_data),
|
||||
'form-MAX_NUM_FORMS': ''
|
||||
}
|
||||
|
||||
formset = PositioningFormSet({**management, **data})
|
||||
|
||||
self.assertTrue(formset.is_valid())
|
||||
for form in formset:
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
response = self.client.post(reverse('edit lineup', args=[event]), {**management, **data})
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
for d in sample_data:
|
||||
with self.subTest(d):
|
||||
p = Positioning.objects.get(player_id=d[1], event_id=event)
|
||||
self.assertEqual(d[0], p.order)
|
||||
self.assertEqual(d[2], p.position)
|
||||
pass
|
||||
@@ -5,5 +5,5 @@ from django.urls import path, include
|
||||
from . import views
|
||||
|
||||
urlpatterns = [
|
||||
path('edit/<int:id>', views.edit, name="edit lineup"),
|
||||
path('edit/<int:event_id>', views.edit, name="edit lineup"),
|
||||
]
|
||||
@@ -8,7 +8,7 @@ from events.models import Event
|
||||
from players.models import Player
|
||||
|
||||
# Create your views here.
|
||||
def edit(request, id):
|
||||
def edit(request, event_id):
|
||||
|
||||
if request.method == 'POST':
|
||||
# create a form instance and populate it with data from the request:
|
||||
@@ -18,12 +18,21 @@ def edit(request, id):
|
||||
# process the data in form.cleaned_data as required
|
||||
# ...
|
||||
# redirect to a new URL:
|
||||
form.cleaned_data.pop('id') #FIXME this is a workaround, not sure why it is necessary
|
||||
new_positioning, did_create = Positioning.objects.update_or_create(id=form['id'].data, defaults=form.cleaned_data)
|
||||
# form.cleaned_data.pop('id')
|
||||
|
||||
if isinstance(form.cleaned_data['id'], Positioning):
|
||||
positioning_id = form.cleaned_data.pop('id').id #FIXME this is a workaround, not sure why it is necessary
|
||||
positioning = Positioning.objects.filter(id=positioning_id)
|
||||
positioning.update(**form.cleaned_data)
|
||||
did_create = False
|
||||
else:
|
||||
positioning = Positioning.objects.create(**form.cleaned_data, event_id=event_id)
|
||||
did_create = True
|
||||
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=id)
|
||||
event = Event.objects.get(id=event_id)
|
||||
players = Player.objects.all()
|
||||
qset = Positioning.objects.filter(event_id=id, order__isnull = False)
|
||||
qset = Positioning.objects.filter(event_id=event_id, order__isnull = False)
|
||||
formset = PositioningFormSet(queryset=qset)
|
||||
for form in formset:
|
||||
for field in form.fields:
|
||||
|
||||
Reference in New Issue
Block a user