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
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})

View File

@@ -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']

View File

@@ -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'<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',
'event': event,
'details':details,
'previous_event': previous_event,
'teamsnap_form': teamsnap_form,
'next_event': next_event,
'formset': formset,
'formset_lineup':formset_lineup,

View File

@@ -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
)

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 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'