diff --git a/nba_data/urls.py b/nba_data/urls.py index 3c8a049..2a90c94 100644 --- a/nba_data/urls.py +++ b/nba_data/urls.py @@ -1,5 +1,5 @@ from django.urls import path -from .views import PlayerDataList, PlayerDataByTeamList, PlayerDataBySeasonList, PlayerDataByNameList, TopScorersbySeasonList, ThreeTwoTopPointTrends, TopAssistsBySeasonList, TopReboundsBySeasonList, TopBlocksBySeasonList, TopStealsBySeasonList, TopOffensiveReboundsBySeasonList, TopDefensiveReboundsBySeasonList, PointsPerGameHistogramBySeasonList, TopPtsScatterPlotData, TopPtsScatterPlotDataFast +from .views import PlayerDataList, PlayerDataByTeamList, PlayerDataBySeasonList, PlayerDataByNameList, TopScorersbySeasonList, ThreeTwoTopPointTrends, TopAssistsBySeasonList, TopReboundsBySeasonList, TopBlocksBySeasonList, TopStealsBySeasonList, TopOffensiveReboundsBySeasonList, TopDefensiveReboundsBySeasonList, PointsPerGameHistogramBySeasonList, TopPtsScatterPlotData, TopPtsScatterPlotDataFast, Top20ScorersPost2009WS urlpatterns = [ path('api/playerdata/', PlayerDataList.as_view(), name='playerdata_list'), @@ -17,4 +17,5 @@ urlpatterns = [ path('api/points_per_game_histogram//', PointsPerGameHistogramBySeasonList.as_view(), name='points_per_game_histogram'), path('api/top_pts_scatter_plot/', TopPtsScatterPlotData.as_view(), name='top_pts_scatter_plot'), path('api/top_pts_scatter_plot_fast/', TopPtsScatterPlotDataFast.as_view(), name='top_pts_scatter_plot_fast'), + path('api/top_20_post_2009_PTS_ws/', Top20ScorersPost2009WS.as_view(), name='top_20_post_2009_PTS_ws') ] \ No newline at end of file diff --git a/nba_data/views.py b/nba_data/views.py index 680787c..bfdaca1 100644 --- a/nba_data/views.py +++ b/nba_data/views.py @@ -1,7 +1,7 @@ from django.shortcuts import render from django.http import JsonResponse from django.core import serializers -from .models import PlayerData, PlayerTotalsData, PlayerAdvancedData +from .models import PlayerData, PlayerTotalsData, PlayerAdvancedData, PlayerPlayoffTotalsData, PlayerPlayoffAdvancedData from rest_framework import generics from .serializers import PlayerDataSerializer, HistogramDataSerializer from rest_framework.views import APIView @@ -252,3 +252,44 @@ class TopPtsScatterPlotDataFast(APIView): }) return Response(result) + + +# Top 20 players in playoffs by PTS X ws for scatter plot in chart.js + +class Top20ScorersPost2009WS(APIView): + def get(self, request): + # Get the top 20 scorers after the 2015 season + top_scorers = PlayerPlayoffTotalsData.objects \ + .filter(season__gt=2009) \ + .values('player_name') \ + .annotate(total_pts=Sum('PTS')) \ + .order_by('-total_pts')[:20] + + # Get the total WS for each of the top 20 scorers after the 2015 season + chart_data = [] + for scorer in top_scorers: + player_name = scorer['player_name'] + total_ws = PlayerPlayoffAdvancedData.objects \ + .filter(player_name=player_name, season__gt=2009) \ + .aggregate(total_ws=Sum('ws'))['total_ws'] + + chart_data.append({ + 'x': scorer['total_pts'], + 'y': total_ws, + 'player_name': player_name + }) + + # Sort the data by total_ws DESC + chart_data = sorted(chart_data, key=lambda x: x['y'], reverse=True) + + # Prepare the response data for chart.js + response_data = { + 'datasets': [ + { + 'data': chart_data + } + ] + } + + return Response(response_data) +