gamechanger updates (added events, teams). not used yet.

This commit is contained in:
2022-06-20 09:35:59 -05:00
parent c0c857a765
commit 9b26bbe973
8 changed files with 169 additions and 33 deletions

View File

@@ -1,3 +1,4 @@
from django import forms
from django.http import HttpResponse, HttpResponseNotAllowed, HttpResponseServerError
from django.shortcuts import render
from django.views.generic.edit import FormView
@@ -5,7 +6,7 @@ from django.views.generic.edit import FormView
from teamsnap.views import get_teamsnap_client
from .forms import AccountForm, PlayerFormSet, PreferencesForm
from .models import Account, Player, Preferences
from .models import Account, Player, Preferences, Team
from .utils import gamechanger
@@ -30,10 +31,15 @@ class PreferencesFormView(FormView):
def form_valid(self, form):
# This method is called when valid form data has been POSTed.
# It should return an HttpResponse.
if form.data["user"] == str(self.request.user.id):
if form.cleaned_data["user"].username == str(
self.request.user.gamechanger_account.user
):
form.save()
return super().form_valid(form)
def form_invalid(self, form):
pass
def get_initial(self):
"""
Returns the initial data to use for forms on this view.
@@ -51,11 +57,32 @@ class PreferencesFormView(FormView):
"""
try:
contact = Preferences.objects.get(user=self.request.user)
form = PreferencesForm(instance=contact, **self.get_form_kwargs())
preferences = Preferences.objects.get(user=self.request.user)
form = PreferencesForm(instance=preferences, **self.get_form_kwargs())
except Preferences.DoesNotExist:
form = super().get_form(self.form_class)
gc_session = gamechanger.get_authenticated_session(self.request)
teams = gamechanger.get_teams(gc_session)
team_instances = []
choices = []
for team in teams:
instance, _ = Team.objects.get_or_create(
id=team["id"],
slug="-".join(team["team_slug"].split("-")[:-1]),
season_slug=team["season_slug"],
)
team_instances.append(instance)
choices.append((team["id"], f"{team['name']} ({team['season']})"))
form.fields["managed_team"].widget = forms.Select(
choices=choices, attrs={"class": "form-control"}
)
# form.fields["managed_team"].choices = [choice[0] for choice in choices]
# form.fields["managed_team"].widget.choices = choices
return form
@@ -97,8 +124,8 @@ class AccountFormView(FormView):
def roster(request):
season_id = request.user.gamechanger_preferences.season_id
team_id = request.user.gamechanger_preferences.team_id
season_id = request.user.gamechanger_preferences.managed_team.season_slug
team_id = request.user.gamechanger_preferences.id
page = "roster"
d = gamechanger.scrape_page(season_id, team_id, page)
roster = d["roster"]
@@ -110,8 +137,9 @@ def roster_import(request):
from pyteamsnap.api import Member
client = get_teamsnap_client(request)
season_id = request.user.gamechanger_preferences.season_id
team_id = request.user.gamechanger_preferences.team_id
season_id = request.user.gamechanger_preferences.managed_team.season_slug
team_slug = request.user.gamechanger_preferences.managed_team.slug
team_id = request.user.gamechanger_preferences.managed_team.id
teamsnap_team_id = request.user.teamsnap_preferences.managed_team_id
teamsnap_members = {
f"{member.data['first_name']} {member.data['last_name']}": member
@@ -120,7 +148,7 @@ def roster_import(request):
page = "roster"
d = gamechanger.scrape_page(season_id, team_id, page)
d = gamechanger.scrape_page(season_id, team_id, team_slug, page)
roster = d["roster"]
initial = [
{
@@ -128,12 +156,18 @@ def roster_import(request):
"fname": player["fname"],
"lname": player["lname"],
"teamsnap_name": "{first_name} {last_name}".format(
**teamsnap_members[f"{player['fname']} {player['lname']}"].data
**getattr(
teamsnap_members.get(f"{player['fname']} {player['lname']}"),
"data",
{"first_name": "", "last_name": ""},
)
),
"id": player.get("player_id"),
"teamsnap_member_id": teamsnap_members[
f"{player['fname']} {player['lname']}"
].data["id"],
"teamsnap_member_id": getattr(
teamsnap_members.get(f"{player['fname']} {player['lname']}"),
"data",
{"id": None},
)["id"],
}
for player in roster
]