provide ways to add benchcoach object to teamsnap object.

This commit is contained in:
2021-12-13 07:25:21 -06:00
parent f54c61d3aa
commit f19a9ee67d
7 changed files with 111 additions and 7 deletions

View File

@@ -2,5 +2,5 @@ from django.http import HttpResponse
from django.shortcuts import render from django.shortcuts import render
def welcome(request): 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}) return render(request,'home.html',{'pages':pages})

View File

@@ -4,6 +4,7 @@ from events.models import Event
from players.models import Player from players.models import Player
from django.forms import modelformset_factory, inlineformset_factory, BaseModelFormSet,formset_factory from django.forms import modelformset_factory, inlineformset_factory, BaseModelFormSet,formset_factory
from crispy_forms.helper import FormHelper, Layout from crispy_forms.helper import FormHelper, Layout
from teamsnap.models import Event as TeamsnapEvent
class PositioningForm(forms.ModelForm): class PositioningForm(forms.ModelForm):
availability = None availability = None
@@ -20,5 +21,24 @@ PositioningFormSet = modelformset_factory(
# fields=['order', 'position','player'], # fields=['order', 'position','player'],
# min_num=9, # min_num=9,
extra=0 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']

View File

@@ -1,6 +1,6 @@
from django.shortcuts import render, redirect, get_object_or_404 from django.shortcuts import render, redirect, get_object_or_404
from .models import Positioning from .models import Positioning
from .forms import PositioningFormSet from .forms import PositioningFormSet, TeamsnapEventForm
from events.models import Event 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
@@ -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_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] 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 = { details = {
"Away Team": event.away_team, "Away Team": event.away_team,
"Home Team": event.home_team, "Home Team": event.home_team,
"Date": event.start.date(), "Date": event.start.date(),
"Time": event.start.time(), "Time": event.start.time(),
"Venue": event.venue, "Venue": event.venue,
"TeamSnap": teamsnap_form
# "TeamSnap Link": event.event_set.first() # "TeamSnap Link": event.event_set.first()
"TeamSnap Link": f'<a href="{reverse("teamsnap edit event", kwargs={"id": event.event_set.first().id})}"> {event.event_set.first()} </a>' if event.event_set.first() else None # "TeamSnap Link": f'<a href="{reverse("teamsnap edit event", kwargs={"id": event.event_set.first().id})}"> {event.event_set.first()} </a>' if event.event_set.first() else None
} }
return render(request, 'lineups/lineup.html', {'title': 'Lineup', return render(request, 'lineups/lineup.html', {'title': 'Lineup',
'event': event, 'event': event,
'details':details, 'details':details,
'previous_event': previous_event, 'previous_event': previous_event,
'teamsnap_form': teamsnap_form,
'next_event': next_event, 'next_event': next_event,
'formset': formset, 'formset': formset,
'formset_lineup':formset_lineup, 'formset_lineup':formset_lineup,

View File

@@ -1,6 +1,5 @@
from django import forms from django import forms
from .models import LineupEntry from .models import LineupEntry, Event
from events.models import Event
from players.models import Player from players.models import Player
from django.forms import modelformset_factory, inlineformset_factory, BaseModelFormSet,formset_factory from django.forms import modelformset_factory, inlineformset_factory, BaseModelFormSet,formset_factory
from crispy_forms.helper import FormHelper, Layout from crispy_forms.helper import FormHelper, Layout
@@ -19,3 +18,24 @@ LineupEntryFormSet = modelformset_factory(
form=LineupEntryForm, form=LineupEntryForm,
extra=0 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
)

View File

@@ -0,0 +1,29 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ formset.management_form }}
<table>
<tr>
{% for _, field in formset.0.base_fields.items %}
<th>{{ field.label }}</th>
{% endfor %}
</tr>
{% for form in formset %}
<tr>
{% for field in form %}
<td>{{ field }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
</body>
</html>

View File

@@ -0,0 +1,10 @@
{% extends "base.html" %}
{% block title %} {{ title }}{% endblock %}
{% block content %}
<h1>Currently Logged in as</h1>
<p><b>BenchCoach: </b>{{ user }} ({{ user.email }})</p>
<p><b>TeamSnap: </b>{{ teamsnap_user.email }}</p>
{% endblock %}

View File

@@ -4,10 +4,13 @@ from django.shortcuts import render, redirect
from .models import User, Member, Team, Event, Location, LineupEntry from .models import User, Member, Team, Event, Location, LineupEntry
from django.views.generic.list import ListView from django.views.generic.list import ListView
from lib.views import BenchcoachListView 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.forms.models import model_to_dict
from django.urls import reverse from django.urls import reverse
from django.db.models import Case, When 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): 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
@@ -19,6 +22,22 @@ def edit_event(request, id):
event = Event.objects.get(id = id) event = Event.objects.get(id = id)
return redirect(event.edit_url) 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): class EventsListView(BenchcoachListView):
Model = Event Model = Event
edit_url = 'teamsnap edit event' edit_url = 'teamsnap edit event'