diff --git a/config/settings/base.py b/config/settings/base.py index fbd12aa..47189c3 100644 --- a/config/settings/base.py +++ b/config/settings/base.py @@ -272,5 +272,5 @@ SOCIALACCOUNT_FORMS = {"signup": "benchcoach.users.forms.UserSocialSignupForm"} # Your stuff... # ------------------------------------------------------------------------------ -INSTALLED_APPS += ["teamsnap", "instagen", "teamsnap.lineup"] +INSTALLED_APPS += ["teamsnap", "instagen", "teamsnap.lineup", "teamsnap.dashboard"] SOCIALACCOUNT_PROVIDERS = {"teamsnap": {"SCOPE": ["read", "write"]}} diff --git a/teamsnap/dashboard/__init__.py b/teamsnap/dashboard/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/teamsnap/dashboard/apps.py b/teamsnap/dashboard/apps.py new file mode 100644 index 0000000..aea90ac --- /dev/null +++ b/teamsnap/dashboard/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class DashboardConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "teamsnap.dashboard" diff --git a/teamsnap/dashboard/migrations/__init__.py b/teamsnap/dashboard/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/teamsnap/templates/dashboard.html b/teamsnap/dashboard/templates/dashboard.html similarity index 100% rename from teamsnap/templates/dashboard.html rename to teamsnap/dashboard/templates/dashboard.html diff --git a/teamsnap/dashboard/tests.py b/teamsnap/dashboard/tests.py new file mode 100644 index 0000000..a79ca8b --- /dev/null +++ b/teamsnap/dashboard/tests.py @@ -0,0 +1,3 @@ +# from django.test import TestCase + +# Create your tests here. diff --git a/teamsnap/dashboard/urls.py b/teamsnap/dashboard/urls.py new file mode 100644 index 0000000..22b0d55 --- /dev/null +++ b/teamsnap/dashboard/urls.py @@ -0,0 +1,7 @@ +from django.urls import path +from views import dashboard + +urlpatterns = [ + path("/dashboard/", dashboard, name="teamsnap_dashboard"), + path("dashboard/", dashboard, name="teamsnap_dashboard"), +] diff --git a/teamsnap/dashboard/views.py b/teamsnap/dashboard/views.py new file mode 100644 index 0000000..2a786ac --- /dev/null +++ b/teamsnap/dashboard/views.py @@ -0,0 +1,42 @@ +import datetime + +from django.shortcuts import redirect, render + +from teamsnap.views import get_teamsnap_client + + +def dashboard(request, team_id=None): + if not team_id: + return redirect( + "teamsnap_dashboard", team_id=request.user.preferences.managed_team_id + ) + + from pyteamsnap.api import AvailabilitySummary, Event + + client = get_teamsnap_client(request) + ts_events = Event.search(client, team_id=team_id) + ts_availability_summaries_d = { + a.data["id"]: a for a in AvailabilitySummary.search(client, team_id=team_id) + } + ts_events_future = [ + e + for e in ts_events + if e.data["start_date"] > datetime.datetime.now(datetime.timezone.utc) + ] + ts_events_past = [ + e + for e in reversed(ts_events) + if e.data["start_date"] < datetime.datetime.now(datetime.timezone.utc) + ] + + return render( + request, + "dashboard.html", + { + "ts_events_future": ts_events_future, + "ts_events_past": ts_events_past, + "events_availabilities": [ + (e, ts_availability_summaries_d[e.data["id"]]) for e in ts_events_future + ], + }, + ) diff --git a/teamsnap/urls.py b/teamsnap/urls.py index 0147fe7..3a34725 100644 --- a/teamsnap/urls.py +++ b/teamsnap/urls.py @@ -18,4 +18,5 @@ urlpatterns += [ name="teamsnap_view_event", ), path("", include("teamsnap.lineup.urls")), + path("", include("teamsnap.dashboard.urls")), ] diff --git a/teamsnap/views.py b/teamsnap/views.py index 69cbe85..9fda7e3 100644 --- a/teamsnap/views.py +++ b/teamsnap/views.py @@ -362,43 +362,6 @@ def edit_lineup(request, event_ids, team_id): return render(request, "lineup/edit.html", context={"contexts": contexts}) -def dashboard(request, team_id=None): - if not team_id: - return redirect( - "teamsnap_dashboard", team_id=request.user.preferences.managed_team_id - ) - - from pyteamsnap.api import AvailabilitySummary, Event - - client = get_teamsnap_client(request) - ts_events = Event.search(client, team_id=team_id) - ts_availability_summaries_d = { - a.data["id"]: a for a in AvailabilitySummary.search(client, team_id=team_id) - } - ts_events_future = [ - e - for e in ts_events - if e.data["start_date"] > datetime.datetime.now(datetime.timezone.utc) - ] - ts_events_past = [ - e - for e in reversed(ts_events) - if e.data["start_date"] < datetime.datetime.now(datetime.timezone.utc) - ] - - return render( - request, - "dashboard.html", - { - "ts_events_future": ts_events_future, - "ts_events_past": ts_events_past, - "events_availabilities": [ - (e, ts_availability_summaries_d[e.data["id"]]) for e in ts_events_future - ], - }, - ) - - def submit_lineup(request, team_id, event_id): from pyteamsnap.api import Event, EventLineup, EventLineupEntry