diff --git a/benchcoach/templates/base.html b/benchcoach/templates/base.html
index 3eb54a6..b104454 100644
--- a/benchcoach/templates/base.html
+++ b/benchcoach/templates/base.html
@@ -65,6 +65,9 @@
{% translate "Schedule" %}
+
+ {% translate "Multi-Lineup" %}
+
diff --git a/teamsnap/forms.py b/teamsnap/forms.py
index a86a08b..d263989 100644
--- a/teamsnap/forms.py
+++ b/teamsnap/forms.py
@@ -52,3 +52,17 @@ class LineupEntryForm(forms.Form):
LineupEntryFormset = formset_factory(
LineupEntryForm, can_delete=True, can_order=True, extra=0
)
+
+
+class EventChooseForm(forms.Form):
+ event_id = forms.ChoiceField()
+
+ # checked = forms.BooleanField(required=False)
+ # def __init__(self, events, *args, **kwargs):
+ # super(EventChooseForm, self).__init__(*args, **kwargs)
+ # self.fields['foo'].choices = [e.data['id'] for e in events]
+
+
+LineupEntryFormset = formset_factory(
+ LineupEntryForm, can_delete=True, can_order=True, extra=0
+)
diff --git a/teamsnap/urls.py b/teamsnap/urls.py
index cdfcbcb..0e12217 100644
--- a/teamsnap/urls.py
+++ b/teamsnap/urls.py
@@ -6,6 +6,7 @@ from .views import (
PreferencesFormView,
dashboard,
edit_lineup,
+ multi_lineup_choose,
schedule_view,
submit_lineup,
view_event,
@@ -39,4 +40,9 @@ urlpatterns += [
edit_lineup,
name="teamsnap_edit_multiple_lineups",
),
+ path(
+ "/multievent/choose",
+ multi_lineup_choose,
+ name="teamsnap_choose_multiple_lineups",
+ ),
]
diff --git a/teamsnap/views.py b/teamsnap/views.py
index b086ac2..0edc0c9 100644
--- a/teamsnap/views.py
+++ b/teamsnap/views.py
@@ -7,7 +7,12 @@ from allauth.socialaccount.providers.oauth2.views import (
OAuth2CallbackView,
OAuth2LoginView,
)
-from django.http import HttpResponseNotAllowed, HttpResponseServerError, JsonResponse
+from django.http import (
+ HttpResponse,
+ HttpResponseNotAllowed,
+ HttpResponseServerError,
+ JsonResponse,
+)
from django.shortcuts import redirect, render
from django.views.generic.edit import FormView
@@ -450,3 +455,57 @@ def submit_lineup(request, team_id, event_id):
return JsonResponse(ts_event.data)
pass
return HttpResponseServerError
+
+
+def multi_lineup_choose(request, team_id):
+ from django.forms import formset_factory
+ from pyteamsnap.api import Event
+
+ from .forms import EventChooseForm
+
+ client = get_teamsnap_client(request)
+
+ if request.method == "POST":
+ ts_events = Event.search(client, team_id=team_id)
+ EventChooseFormset = formset_factory(EventChooseForm)
+ formset = EventChooseFormset(request.POST)
+ choices = [(e.data["id"], e.data["formatted_title"]) for e in ts_events]
+
+ for form in formset:
+ form.fields["event_id"].choices = choices
+
+ if formset.is_valid():
+ event_ids = [f.cleaned_data["event_id"] for f in formset]
+ else:
+ event_ids = request.GET.get("event_ids").split(",")
+ EventChooseFormset = formset_factory(EventChooseForm)
+ formset = EventChooseFormset(request.POST)
+
+ return redirect(
+ "teamsnap_edit_multiple_lineups",
+ team_id=team_id,
+ event_ids=",".join(event_ids),
+ )
+ elif not request.GET.get("num"):
+ return HttpResponse(500)
+ else:
+ num = int(request.GET.get("num"))
+ TEAM_ID = team_id
+
+ ts_events = Event.search(client, team_id=TEAM_ID)
+ ts_events = {e.data["id"]: e for e in ts_events}
+
+ EventChooseFormset = formset_factory(EventChooseForm, extra=num)
+ formset = EventChooseFormset()
+
+ choices = [(id, e.data["formatted_title"]) for id, e in ts_events.items()]
+
+ for form in formset:
+ form.fields["event_id"].choices = choices
+
+ pass
+ return render(
+ request,
+ "lineup/multiple_choose.html",
+ context={"formset": formset, "team_id": team_id},
+ )