diff --git a/benchcoach/templates/benchcoach/lineup.html b/benchcoach/templates/benchcoach/lineup.html index 809f70a..0330d23 100644 --- a/benchcoach/templates/benchcoach/lineup.html +++ b/benchcoach/templates/benchcoach/lineup.html @@ -57,20 +57,7 @@
Event
-
{% csrf_token %} - - - - - - -
- - + {% include 'teamsnap/update-button.html' with object_name='event' object_id=event.id next=request.path %}
@@ -108,11 +95,6 @@
Bench
-
- -
diff --git a/teamsnap/templates/teamsnap/home.html b/teamsnap/templates/teamsnap/home.html index df837ab..af6f497 100644 --- a/teamsnap/templates/teamsnap/home.html +++ b/teamsnap/templates/teamsnap/home.html @@ -21,9 +21,10 @@ {{ obj_data.object_count }} {{ obj_data.counterpart.name }} {{ obj_data.counterpart.object_count }} - - Sync - + + + {% include 'teamsnap/update-button.html' with object_name=obj_data.counterpart.name object_id='' next=request.path %} + {% endfor %} diff --git a/teamsnap/templates/teamsnap/update-button.html b/teamsnap/templates/teamsnap/update-button.html new file mode 100644 index 0000000..09be73d --- /dev/null +++ b/teamsnap/templates/teamsnap/update-button.html @@ -0,0 +1,8 @@ +
{% csrf_token %} + + + + +
\ No newline at end of file diff --git a/teamsnap/urls.py b/teamsnap/urls.py index 264e8fc..82c3a82 100644 --- a/teamsnap/urls.py +++ b/teamsnap/urls.py @@ -14,7 +14,7 @@ urlpatterns = [ path('sync_teamsnap_db', views.sync_teamsnapdb_with_teamsnapapi, name="sync with teamsnapapi"), path('sync_benchcoach_db', views.sync_teamsnapdb_to_benchcoachdb, name="sync benchcoach"), path('update/', views.update_teamsnapdb_from_teamsnapapi, name="update"), - path('send/', views.send_to_benchcoach, name="send"), + path('send', views.send_to_benchcoach, name="send"), path('sync/', views.sync, name="sync"), path('import/', views.import_teamsnap, name="import") # path('import_teamsnap', views.import_teamsnap, name="import teamsnap"), diff --git a/teamsnap/views.py b/teamsnap/views.py index da6e248..aa0f29b 100644 --- a/teamsnap/views.py +++ b/teamsnap/views.py @@ -175,47 +175,68 @@ def update_teamsnapdb_from_teamsnapapi(request, object_name, object_id=None): return redirect('teamsnap home') @login_required() -def send_to_benchcoach(request, object_name): - Object = { - obj.__name__.lower(): obj - for obj in - [Availability, Event, LineupEntry, Location, Member, Opponent, Team, User] - }.get(object_name) +def send_to_benchcoach(request, object_name=None, object_id=None): #TODO rename + if request.POST: + next = request.POST.get('next') + object_name = request.POST.get('object_name') + object_id = request.POST.get('object_id') - TEAM_ID = request.user.profile.teamsnapsettings.managed_team.id - TOKEN = request.user.profile.teamsnap_access_token + Object = { + obj.__name__.lower(): obj + for obj in + [Availability, Event, LineupEntry, Location, Member, Opponent, Team, User] + }.get(object_name) - sync_engine = TeamsnapSyncEngine(teamsnap_token=TOKEN, managed_team_teamsnap_id=TEAM_ID) - r = {} + TEAM_ID = request.user.profile.teamsnapsettings.managed_team.id + TOKEN = request.user.profile.teamsnap_access_token - r[object_name]=[] + sync_engine = TeamsnapSyncEngine(teamsnap_token=TOKEN, managed_team_teamsnap_id=TEAM_ID) + r = {} - if object_name == 'team': - r[object_name] = sync_engine.sync(qs=benchcoach.models.Team.objects.all()) + r[object_name]=[] - if object_name == 'venue': - r[object_name] = sync_engine.sync(qs=benchcoach.models.Venue.objects.all()) - pass + if object_name == 'team': + if object_id: + r[object_name] = sync_engine.sync(qs=benchcoach.models.Team.objects.filter(id=object_id)) + else: + r[object_name] = sync_engine.sync(qs=benchcoach.models.Team.objects.all()) - if object_name == 'player': - r[object_name] = sync_engine.sync(qs=benchcoach.models.Player.objects.all()) + if object_name == 'venue': + if object_id: + r[object_name] = sync_engine.sync(qs=benchcoach.models.Venue.objects.filter(id=object_id)) + else: + r[object_name] = sync_engine.sync(qs=benchcoach.models.Venue.objects.all()) - if object_name == 'event': - r[object_name] = sync_engine.sync(qs=benchcoach.models.Event.objects.all()) - pass + if object_name == 'player': + if object_id: + r[object_name] = sync_engine.sync(qs=benchcoach.models.Player.objects.filter(id=object_id)) + else: + r[object_name] = sync_engine.sync(qs=benchcoach.models.Player.objects.all()) - if object_name == 'availability': - r[object_name] = [] - for event in benchcoach.models.Player.objects.all(): - r[object_name] += sync_engine.sync(qs=event.availability_set.all()) + if object_name == 'event': + if object_id: + r[object_name] = sync_engine.sync(qs=benchcoach.models.Event.objects.filter(id=object_id)) + r['availability'] = sync_engine.sync(qs=benchcoach.models.Event.objects.get(id=object_id).availability_set.all()) + else: + r[object_name] = sync_engine.sync(qs=benchcoach.models.Event.objects.all()) - for object_name, results in r.items(): - if len(results) == 0: - messages.error(request, f"Error! No {object_name} objects updated") - else: - messages.success(request, f"Success! {len(results)} {object_name} objects updated.") + if object_name == 'availability': + r[object_name] = [] + if object_id: + r[object_name] += sync_engine.sync(qs=benchcoach.models.Availability.objects.filter(id=object_id)) + else: + for event in benchcoach.models.Player.objects.all(): + r[object_name] += sync_engine.sync(qs=event.availability_set.all()) - return redirect('teamsnap home') + for object_name, results in r.items(): + if len(results) == 0: + messages.error(request, f"Error! No {object_name} objects updated") + else: + messages.success(request, f"Success! {len(results)} {object_name} objects updated.") + + return redirect(next) + else: + return HttpResponse(404) def sync_teamsnapdb_with_teamsnapapi(request): '''