diff --git a/benchcoach/static/css/project.css b/benchcoach/static/css/project.css
index f1d543d..1164b47 100644
--- a/benchcoach/static/css/project.css
+++ b/benchcoach/static/css/project.css
@@ -11,3 +11,7 @@
background-color: #f2dede;
border-color: #eed3d7;
}
+
+.navbar-brand {
+ text-transform: uppercase;
+}
diff --git a/benchcoach/templates/base.html b/benchcoach/templates/base.html
index f0c3745..4603391 100644
--- a/benchcoach/templates/base.html
+++ b/benchcoach/templates/base.html
@@ -15,7 +15,7 @@
-
+
{% endblock %}
@@ -37,7 +37,7 @@
diff --git a/benchcoach/users/admin.py b/benchcoach/users/admin.py
index 14de6f3..94af963 100644
--- a/benchcoach/users/admin.py
+++ b/benchcoach/users/admin.py
@@ -4,12 +4,9 @@ from django.contrib.auth import get_user_model
from django.utils.translation import gettext_lazy as _
from benchcoach.users.forms import UserAdminChangeForm, UserAdminCreationForm
-from teamsnap.models import Preferences
User = get_user_model()
-admin.site.register(Preferences)
-
@admin.register(User)
class UserAdmin(auth_admin.UserAdmin):
diff --git a/config/urls.py b/config/urls.py
index 86ca410..43d57a6 100644
--- a/config/urls.py
+++ b/config/urls.py
@@ -15,7 +15,7 @@ urlpatterns = [
# User management
path("users/", include("benchcoach.users.urls", namespace="users")),
path("accounts/", include("allauth.urls")),
- path("ts/", include("teamsnap.urls")),
+ path("", include("teamsnap.urls")),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
diff --git a/teamsnap/admin.py b/teamsnap/admin.py
index 846f6b4..cdfa15c 100644
--- a/teamsnap/admin.py
+++ b/teamsnap/admin.py
@@ -1 +1,6 @@
+from django.contrib import admin
+
+from .models import Preferences
+
# Register your models here.
+admin.site.register(Preferences)
diff --git a/teamsnap/templates/event/instagen.html b/teamsnap/templates/event/instagen.html
new file mode 100644
index 0000000..0e63ad6
--- /dev/null
+++ b/teamsnap/templates/event/instagen.html
@@ -0,0 +1,76 @@
+
+{% extends "base.html" %}{% load static %}
+{% block title %} {{ event.data.formatted_title }} - Instagenerator{% endblock %}
+{% block page_heading %}
+
+
+

+
+
Hounds Instagenerator
+
+{% endblock %}
+{% block page_subheading %}{{ event.data.formatted_title }}, {{ event.data.start_date }}, {{ event.data.location_name }}{% endblock %}
+{% block content %}
+
+
+
+{% endblock %}
diff --git a/teamsnap/templates/event/view_event.html b/teamsnap/templates/event/view_event.html
new file mode 100644
index 0000000..9ad1e08
--- /dev/null
+++ b/teamsnap/templates/event/view_event.html
@@ -0,0 +1,144 @@
+{% extends "base.html" %}{% load static %}
+{% block title %} {{ title }}{% endblock %}
+
+{% block content %}
+
+
+
{{ event.data.formatted_title }}
+
{{ event.data.start_date|date:"D, F j, Y g:i A" }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+
+ {{ availability_summary.data.player_going_count }}
+ |
+
+
+
+ |
+
+ {{ availability_summary.data.player_maybe_count }}
+ |
+
+
+
+ |
+
+ {{ availability_summary.data.player_not_going_count }}
+ |
+
+
+
+ |
+
+ {{ availability_summary.data.player_unknown_count }}
+ |
+
+
+
+
+
+
+
+
+
+
+
+{% endblock %}
diff --git a/teamsnap/templates/schedule.html b/teamsnap/templates/schedule.html
index afb28cb..2c59047 100644
--- a/teamsnap/templates/schedule.html
+++ b/teamsnap/templates/schedule.html
@@ -35,7 +35,7 @@
{{ event.data.location_name }}
-
+
|
{% endfor %}
diff --git a/teamsnap/urls.py b/teamsnap/urls.py
index f0b6647..4d172e9 100644
--- a/teamsnap/urls.py
+++ b/teamsnap/urls.py
@@ -2,8 +2,17 @@ from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns
from django.urls import path
from .provider import TeamsnapProvider
-from .views import PreferencesFormView
+from .views import PreferencesFormView, schedule_view, view_event
urlpatterns = default_urlpatterns(TeamsnapProvider)
-urlpatterns += [path("preferences", PreferencesFormView.as_view(), name="preferences")]
+urlpatterns += [
+ path("preferences/", PreferencesFormView.as_view(), name="preferences"),
+ path("/schedule/", schedule_view, name="teamsnap_schedule"),
+ path("schedule/", schedule_view, name="teamsnap_schedule"),
+ path(
+ "/schedule/view_event/",
+ view_event,
+ name="teamsnap_view_event",
+ ),
+]
diff --git a/teamsnap/views.py b/teamsnap/views.py
index 540dea0..fdb8770 100644
--- a/teamsnap/views.py
+++ b/teamsnap/views.py
@@ -1,9 +1,12 @@
+import datetime
+
import requests
from allauth.socialaccount.providers.oauth2.views import (
OAuth2Adapter,
OAuth2CallbackView,
OAuth2LoginView,
)
+from django.shortcuts import redirect, render
from django.views.generic.edit import FormView
from .forms import PreferencesForm
@@ -103,3 +106,93 @@ class PreferencesFormView(FormView):
form.fields["managed_team_id"].widget.choices = choices
return form
+
+
+def schedule_view(request, team_id=None):
+ if not team_id:
+ return redirect(
+ "teamsnap_schedule", team_id=request.user.preferences.managed_team_id
+ )
+ request.user.socialaccount_set.filter(provider="teamsnap").first()
+ current_teamsnap_user = request.user.socialaccount_set.filter(
+ provider="teamsnap"
+ ).first()
+
+ ts_token = (
+ current_teamsnap_user.socialtoken_set.order_by("-expires_at").first().token
+ )
+ no_past = bool(request.GET.get("no_past", 0))
+ games_only = bool(request.GET.get("games_only", 0))
+ from pyteamsnap.api import Event, TeamSnap
+
+ client = TeamSnap(token=ts_token)
+ ts_events = Event.search(client, team_id=team_id)
+ if no_past:
+ ts_events = [
+ e
+ for e in ts_events
+ if e.data["start_date"] > datetime.datetime.now(datetime.timezone.utc)
+ ]
+ if games_only:
+ ts_events = [e for e in ts_events if e.data["is_game"]]
+ ts_events = {e.data["id"]: e for e in ts_events}
+
+ pass
+ return render(
+ request,
+ "schedule.html",
+ context={"events": ts_events.values(), "team_id": team_id},
+ )
+
+
+def view_event(request, event_id, team_id=None):
+ if not team_id:
+ return redirect(
+ "teamsnap_event", team_id=request.user.preferences.managed_team_id
+ )
+ request.user.socialaccount_set.filter(provider="teamsnap").first()
+ current_teamsnap_user = request.user.socialaccount_set.filter(
+ provider="teamsnap"
+ ).first()
+
+ ts_token = (
+ current_teamsnap_user.socialtoken_set.order_by("-expires_at").first().token
+ )
+
+ from pyteamsnap.api import (
+ AvailabilitySummary,
+ Event,
+ EventLineup,
+ EventLineupEntry,
+ Member,
+ TeamSnap,
+ )
+
+ client = TeamSnap(token=ts_token)
+ ts_bulkload = client.bulk_load(
+ team_id=team_id,
+ types=[Event, EventLineup, EventLineupEntry, AvailabilitySummary, Member],
+ event__id=event_id,
+ )
+ ts_event = [i for i in ts_bulkload if isinstance(i, Event)][0]
+ ts_availability_summary = [
+ i
+ for i in ts_bulkload
+ if isinstance(i, AvailabilitySummary) and i.data["event_id"] == event_id
+ ][0]
+ ts_lineup_entries = [
+ i
+ for i in ts_bulkload
+ if isinstance(i, EventLineupEntry) and i.data["event_id"] == event_id
+ ]
+
+ return render(
+ request,
+ "event/view_event.html",
+ context={
+ "availability_summary": ts_availability_summary,
+ "event": ts_event,
+ "availablities": [],
+ "lineup_entries": ts_lineup_entries,
+ },
+ )