Merge branch 'v2' into v2-gamechanger

# Conflicts:
#	config/settings/base.py
This commit is contained in:
2022-06-08 07:09:14 -05:00
9 changed files with 79 additions and 83 deletions

View File

@@ -15,11 +15,25 @@ class Migration(migrations.Migration):
operations = [
migrations.CreateModel(
name='Preferences',
name="Preferences",
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('managed_team_id', models.IntegerField()),
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("managed_team_id", models.IntegerField()),
(
"user",
models.OneToOneField(
on_delete=django.db.models.deletion.CASCADE,
to=settings.AUTH_USER_MODEL,
),
),
],
),
]

View File

@@ -7,8 +7,8 @@ from .views import (
dashboard,
edit_lineup,
schedule_view,
submit_lineup,
view_event,
submit_lineup
)
urlpatterns = default_urlpatterns(TeamsnapProvider)
@@ -30,12 +30,13 @@ urlpatterns += [
name="teamsnap_edit_lineup",
),
path(
'<int:team_id>/event/<int:event_id>/submit_lineup/',
"<int:team_id>/event/<int:event_id>/submit_lineup/",
submit_lineup,
name='teamsnap_submit_lineup'
name="teamsnap_submit_lineup",
),
path(
"<int:team_id>/event/<str:event_ids>/edit_lineup/",
edit_lineup,
name="teamsnap_edit_multiple_lineups",
),
path('<int:team_id>/event/<str:event_ids>/edit_lineup/',
edit_lineup,
name='teamsnap_edit_multiple_lineups'
),
]

View File

@@ -1,19 +1,20 @@
import datetime
import pyteamsnap.api
import requests
from allauth.socialaccount.providers.oauth2.views import (
OAuth2Adapter,
OAuth2CallbackView,
OAuth2LoginView,
)
from django.http import HttpResponseNotAllowed, HttpResponseServerError, JsonResponse
from django.shortcuts import redirect, render
from django.views.generic.edit import FormView
from django.http import HttpResponseNotAllowed, HttpResponse, JsonResponse, HttpResponseServerError
from .forms import PreferencesForm
from .models import Preferences
from .provider import TeamsnapProvider
import pyteamsnap.api
class TeamsnapAdapter(OAuth2Adapter):
provider_id = TeamsnapProvider.id
@@ -46,6 +47,7 @@ class TeamsnapAdapter(OAuth2Adapter):
oauth2_login = OAuth2LoginView.adapter_view(TeamsnapAdapter)
oauth2_callback = OAuth2CallbackView.adapter_view(TeamsnapAdapter)
def get_teamsnap_client(request):
request.user.socialaccount_set.filter(provider="teamsnap").first()
current_teamsnap_user = request.user.socialaccount_set.filter(
@@ -58,6 +60,7 @@ def get_teamsnap_client(request):
return pyteamsnap.api.TeamSnap(token=ts_token)
class PreferencesFormView(FormView):
template_name = "preferences.html"
form_class = PreferencesForm
@@ -190,8 +193,6 @@ def view_event(request, event_id, team_id=None):
def edit_lineup(request, event_ids, team_id):
import re
from teamsnap.forms import LineupEntryFormset
from pyteamsnap.api import (
Availability,
AvailabilitySummary,
@@ -199,9 +200,10 @@ def edit_lineup(request, event_ids, team_id):
EventLineup,
EventLineupEntry,
Member,
TeamSnap,
)
from teamsnap.forms import LineupEntryFormset
client = get_teamsnap_client(request)
event_ids = str(event_ids).split(",")
@@ -231,28 +233,34 @@ def edit_lineup(request, event_ids, team_id):
for lineup_entry in ts_lineup_entries:
members.append(
{
"member": getattr(ts_member_lookup[lineup_entry.data['member_id']],'data'),
"member": getattr(
ts_member_lookup[lineup_entry.data["member_id"]], "data"
),
"availability": getattr(
ts_availability_lookup.get(lineup_entry.data['member_id'], {}), "data", {}
),
"lineup_entry": getattr(
lineup_entry, "data", {}
ts_availability_lookup.get(lineup_entry.data["member_id"], {}),
"data",
{},
),
"lineup_entry": getattr(lineup_entry, "data", {}),
}
)
in_lineup_already = [m['member'] for m in members]
in_lineup_already = [m["member"] for m in members]
for member in ts_members:
if not member.data in in_lineup_already:
if member.data not in in_lineup_already:
members.append(
{
"member": getattr(member, "data"),
"availability": getattr(
ts_availability_lookup.get(member.data["id"], {}), "data", {}
ts_availability_lookup.get(member.data["id"], {}),
"data",
{},
),
"lineup_entry": getattr(
ts_lineup_entries_lookup.get(member.data["id"], {}), "data", {}
ts_lineup_entries_lookup.get(member.data["id"], {}),
"data",
{},
),
}
)
@@ -346,9 +354,7 @@ def edit_lineup(request, event_ids, team_id):
}
)
return render(
request, "lineup/multiple_edit.html", context={"contexts": contexts}
)
return render(request, "lineup/multiple_edit.html", context={"contexts": contexts})
def dashboard(request, team_id=None):
@@ -389,14 +395,14 @@ def dashboard(request, team_id=None):
def submit_lineup(request, team_id, event_id):
from pyteamsnap.api import Event, EventLineup, EventLineupEntry
from teamsnap.forms import LineupEntryFormset
from pyteamsnap.api import EventLineup, TeamSnap, EventLineupEntry, Event
client = get_teamsnap_client(request)
ts_event = Event.get(client,event_id)
ts_event = Event.get(client, event_id)
ts_lineup = EventLineup.search(client, event_id=event_id)
event_lineup_id = ts_lineup[0].data['id']
event_lineup_id = ts_lineup[0].data["id"]
if request.GET:
return HttpResponseNotAllowed()
if request.POST:
@@ -405,12 +411,14 @@ def submit_lineup(request, team_id, event_id):
r = []
for form in formset:
data = form.cleaned_data
if data.get('event_lineup_entry_id'):
event_lineup_entry = EventLineupEntry.get(client, id=data.get('event_lineup_entry_id'))
if data.get('position_only'):
data['label'] = data['label'] + ' [PO]'
if data.get("event_lineup_entry_id"):
event_lineup_entry = EventLineupEntry.get(
client, id=data.get("event_lineup_entry_id")
)
if data.get("position_only"):
data["label"] = data["label"] + " [PO]"
event_lineup_entry.data.update(data)
if not data.get('sequence') and not data.get('label'):
if not data.get("sequence") and not data.get("label"):
try:
r.append(event_lineup_entry.delete())
except Exception as e:
@@ -418,13 +426,14 @@ def submit_lineup(request, team_id, event_id):
else:
try:
r.append(event_lineup_entry.put())
except:
except Exception as e:
e
pass
pass
elif data.get('sequence') is not None and data.get('label'):
elif data.get("sequence") is not None and data.get("label"):
event_lineup_entry = EventLineupEntry.new(client)
if data.get('position_only'):
data['label'] = data['label'] + ' [PO]'
if data.get("position_only"):
data["label"] = data["label"] + " [PO]"
event_lineup_entry.data.update(data)
event_lineup_entry.data.update({"event_lineup_id": event_lineup_id})
try: