diff --git a/benchcoach/views.py b/benchcoach/views.py index 9d919d4..b2389f1 100644 --- a/benchcoach/views.py +++ b/benchcoach/views.py @@ -2,5 +2,5 @@ from django.http import HttpResponse from django.shortcuts import render def welcome(request): - pages = ['events list', 'teams list', 'venues list', 'players list', 'teamsnap list events'] + pages = ['events list', 'teams list', 'venues list', 'players list', 'teamsnap list events', 'teamsnap home'] return render(request,'home.html',{'pages':pages}) \ No newline at end of file diff --git a/lineups/forms.py b/lineups/forms.py index b7ccd88..f9b9ee7 100644 --- a/lineups/forms.py +++ b/lineups/forms.py @@ -4,6 +4,7 @@ from events.models import Event from players.models import Player from django.forms import modelformset_factory, inlineformset_factory, BaseModelFormSet,formset_factory from crispy_forms.helper import FormHelper, Layout +from teamsnap.models import Event as TeamsnapEvent class PositioningForm(forms.ModelForm): availability = None @@ -20,5 +21,24 @@ PositioningFormSet = modelformset_factory( # fields=['order', 'position','player'], # min_num=9, extra=0 - ) + +class TeamsnapEventForm(forms.ModelForm): + def __init__(self, *args, **kwargs): + super(TeamsnapEventForm, self).__init__(*args, **kwargs) + if self.instance and self.instance.event_set.first(): + initial = (self.instance.event_set.first().id, self.instance.event_set.first()) + else: + initial = None + self.fields = {} + choices = [("","-----")] + choices += [(choice.id, choice) for choice in TeamsnapEvent.objects.all()] + self.fields['teamsnap event'] = forms.MultipleChoiceField( + widget=forms.Select(attrs={'class': 'form-control'}), + choices=choices, + initial=initial + ) + + class Meta: + model = Event + fields = ['start', 'home_team', 'away_team', 'venue'] \ No newline at end of file diff --git a/lineups/views.py b/lineups/views.py index 6108130..4cdda03 100644 --- a/lineups/views.py +++ b/lineups/views.py @@ -1,6 +1,6 @@ from django.shortcuts import render, redirect, get_object_or_404 from .models import Positioning -from .forms import PositioningFormSet +from .forms import PositioningFormSet, TeamsnapEventForm from events.models import Event from players.models import Player from django.db.models import Case, When @@ -88,20 +88,26 @@ def edit(request, event_id): formset_dhd = [f for f in formset if not f.instance.order and f.instance.position] formset_bench = [f for f in formset if f not in formset_lineup and f not in formset_dhd] + teamsnap_form = TeamsnapEventForm(instance=event) + details = { "Away Team": event.away_team, "Home Team": event.home_team, "Date": event.start.date(), "Time": event.start.time(), "Venue": event.venue, + "TeamSnap": teamsnap_form # "TeamSnap Link": event.event_set.first() - "TeamSnap Link": f' {event.event_set.first()} ' if event.event_set.first() else None + # "TeamSnap Link": f' {event.event_set.first()} ' if event.event_set.first() else None } + + return render(request, 'lineups/lineup.html', {'title': 'Lineup', 'event': event, 'details':details, 'previous_event': previous_event, + 'teamsnap_form': teamsnap_form, 'next_event': next_event, 'formset': formset, 'formset_lineup':formset_lineup, diff --git a/teamsnap/forms.py b/teamsnap/forms.py index f1fd691..7247922 100644 --- a/teamsnap/forms.py +++ b/teamsnap/forms.py @@ -1,6 +1,5 @@ from django import forms -from .models import LineupEntry -from events.models import Event +from .models import LineupEntry, Event from players.models import Player from django.forms import modelformset_factory, inlineformset_factory, BaseModelFormSet,formset_factory from crispy_forms.helper import FormHelper, Layout @@ -19,3 +18,24 @@ LineupEntryFormSet = modelformset_factory( form=LineupEntryForm, extra=0 ) + +class EventForm(forms.ModelForm): + availability = None + class Meta: + model = Event + fields = ('formatted_title', 'start_date', 'benchcoach_object') + labels ={ + 'formatted_title':"Title", + 'benchcoach_object':'BenchCoach Link', + 'start_date':'Date/Time' + } + widgets = { + "formatted_title":forms.TextInput(attrs={"disabled":"disabled"}), + "start_date": forms.DateTimeInput(attrs={"disabled": "disabled"}) + } + +EventFormSet = modelformset_factory( + model=Event, + form=EventForm, + extra=0 +) diff --git a/teamsnap/templates/teamsnap/event-table.html b/teamsnap/templates/teamsnap/event-table.html new file mode 100644 index 0000000..3850a13 --- /dev/null +++ b/teamsnap/templates/teamsnap/event-table.html @@ -0,0 +1,29 @@ + + + + + Title + + + +{{ formset.management_form }} + + + {% for _, field in formset.0.base_fields.items %} + + {% endfor %} + + + {% for form in formset %} + + {% for field in form %} + + + + {% endfor %} + + {% endfor %} +
{{ field.label }}
{{ field }}
+ + + \ No newline at end of file diff --git a/teamsnap/templates/teamsnap/home.html b/teamsnap/templates/teamsnap/home.html new file mode 100644 index 0000000..9a9fe24 --- /dev/null +++ b/teamsnap/templates/teamsnap/home.html @@ -0,0 +1,10 @@ +{% extends "base.html" %} +{% block title %} {{ title }}{% endblock %} + +{% block content %} + +

Currently Logged in as

+

BenchCoach: {{ user }} ({{ user.email }})

+

TeamSnap: {{ teamsnap_user.email }}

+ +{% endblock %} \ No newline at end of file diff --git a/teamsnap/views.py b/teamsnap/views.py index c083154..d68dd33 100644 --- a/teamsnap/views.py +++ b/teamsnap/views.py @@ -4,10 +4,13 @@ from django.shortcuts import render, redirect from .models import User, Member, Team, Event, Location, LineupEntry from django.views.generic.list import ListView from lib.views import BenchcoachListView -from .forms import LineupEntryForm, LineupEntryFormSet +from .forms import LineupEntryForm, LineupEntryFormSet, EventForm, EventFormSet from django.forms.models import model_to_dict from django.urls import reverse from django.db.models import Case, When +from django.views import View +from django.http import HttpResponse +from benchcoach.models import Profile as BenchcoachUser def queryset_from_ids(Model, id_list): #https://stackoverflow.com/questions/4916851/django-get-a-queryset-from-array-of-ids-in-specific-order @@ -19,6 +22,22 @@ def edit_event(request, id): event = Event.objects.get(id = id) return redirect(event.edit_url) +def home(request): + current_benchcoach_user = BenchcoachUser.objects.get(id=1) + current_teamsnap_user = current_benchcoach_user.teamsnap_user + context= { + 'user': request.user, + 'benchcoach_user': current_benchcoach_user, + 'teamsnap_user': current_teamsnap_user + } + return render(request, 'teamsnap/home.html', context) + +class EventsTableView(View): + def get(self, request): + qs = Event.objects.all() + formset = EventFormSet(queryset=qs) + return render(request,'teamsnap/event-table.html', context={'formset':formset}) + class EventsListView(BenchcoachListView): Model = Event edit_url = 'teamsnap edit event'