from django.shortcuts import render from django.views.generic.edit import FormView from django.views.generic.list import ListView from .forms import PreferencesForm, AccountForm, PlayerFormSet from .utils.gamechanger import scrape_page from teamsnap.views import get_teamsnap_client # Create your views here. class PreferencesFormView(FormView): template_name = "gamechanger/form.html" form_class = PreferencesForm success_url = "/" 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): form.save() return super().form_valid(form) def get_initial(self): """ Returns the initial data to use for forms on this view. """ initial = super().get_initial() initial["user"] = self.request.user initial["email"] = self.request.user.username # initial['managed_team_id'] return initial class AccountFormView(FormView): template_name = "gamechanger/form.html" form_class = AccountForm success_url = "/" 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): form.save() return super().form_valid(form) def get_initial(self): """ Returns the initial data to use for forms on this view. """ initial = super().get_initial() initial["user"] = self.request.user initial["email"] = self.request.user.username # initial['managed_team_id'] return initial def roster_view(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 teamsnap_team_id = request.user.preferences.managed_team_id teamsnap_members = { f"{member.data['first_name']} {member.data['last_name']}":member for member in Member.search(client, team_id=teamsnap_team_id) } page = "roster" d = scrape_page(season_id, team_id, page) roster = d['roster'] initial = [{ 'gamechanger_name':f"{player['fname']} {player['lname']}", 'teamsnap_name':"{first_name} {last_name}".format(**teamsnap_members[f"{player['fname']} {player['lname']}"].data), 'gamechanger_id':player.get('player_id'), 'teamsnap_member_id':teamsnap_members[f"{player['fname']} {player['lname']}"].data['id'], } for player in roster] formset = PlayerFormSet(initial=initial) return render(request, "gamechanger/roster.html", context={'roster':roster, 'formset':formset}) pass def roster_save(request): pass