From a8e9138d016930ff308611db27c26e198960b6bf Mon Sep 17 00:00:00 2001 From: nprasad2077 <114438461+nprasad2077@users.noreply.github.com> Date: Wed, 3 May 2023 23:09:56 -0500 Subject: [PATCH] point and assist season total routes --- nba_data/urls.py | 3 ++- nba_data/views.py | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/nba_data/urls.py b/nba_data/urls.py index 7a7ddf2..9326e0c 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, TopScorersbySeasonListPlayoffs, ThreeTwoTopPointTrends, TopAssistsBySeasonList, TopReboundsBySeasonList, TopBlocksBySeasonList, TopStealsBySeasonList, TopOffensiveReboundsBySeasonList, TopDefensiveReboundsBySeasonList, PointsPerGameHistogramBySeasonList, TopPtsScatterPlotData, TopPtsScatterPlotDataFast, TopPtsScatterPlotDataFast2018, Top20ScorersPost2009WS, Top20ScorersPost2014WS, Top20ScorersPost2018WS, TopAssistsBySeasonListPlayoffs, Top25ScorersPostSeasonPlayoffs, TopPtsScatterPlotDataFastSelect, OverallDBStats +from .views import PlayerDataList, PlayerDataByTeamList, PlayerDataBySeasonList, PlayerDataByNameList, TopScorersbySeasonList, TopScorersbySeasonListPlayoffs, ThreeTwoTopPointTrends, TopAssistsBySeasonList, TopReboundsBySeasonList, TopBlocksBySeasonList, TopStealsBySeasonList, TopOffensiveReboundsBySeasonList, TopDefensiveReboundsBySeasonList, PointsPerGameHistogramBySeasonList, TopPtsScatterPlotData, TopPtsScatterPlotDataFast, TopPtsScatterPlotDataFast2018, Top20ScorersPost2009WS, Top20ScorersPost2014WS, Top20ScorersPost2018WS, TopAssistsBySeasonListPlayoffs, Top25ScorersPostSeasonPlayoffs, TopPtsScatterPlotDataFastSelect, OverallDBStats, TopScorersbySeasonTotalsList urlpatterns = [ path('api/playerdata/', PlayerDataList.as_view(), name='playerdata_list'), @@ -7,6 +7,7 @@ urlpatterns = [ path('api/playerdata/season//', PlayerDataBySeasonList.as_view(), name='playerdata_by_season'), path('api/playerdata/name//', PlayerDataByNameList.as_view(), name='playerdata_by_name'), path('api/playerdata/topscorers/season//', TopScorersbySeasonList.as_view(), name='top_scorers_by_season'), + path('api/playerdata/topscorers/total/season//', TopScorersbySeasonTotalsList.as_view(), name='top_scorers_totals_by_season'), path('api/playerdata/topscorers/playoffs//', TopScorersbySeasonListPlayoffs.as_view(), name='top_scorers_by_season_playoffs'), path('api/three_two_point_trends/', ThreeTwoTopPointTrends.as_view(), name='three_two_point_trends'), path('api/top_assists//', TopAssistsBySeasonList.as_view(), name='top_assists'), diff --git a/nba_data/views.py b/nba_data/views.py index 9e169e7..8071720 100644 --- a/nba_data/views.py +++ b/nba_data/views.py @@ -3,7 +3,7 @@ from django.http import JsonResponse, Http404 from django.core import serializers from .models import PlayerData, PlayerTotalsData, PlayerAdvancedData, PlayerPlayoffTotalsData, PlayerPlayoffAdvancedData from rest_framework import generics -from .serializers import PlayerDataSerializer, HistogramDataSerializer, PlayerPlayoffTotalsDataSerializer +from .serializers import PlayerDataSerializer, HistogramDataSerializer, PlayerPlayoffTotalsDataSerializer, PlayerTotalsDataSerializer from rest_framework.views import APIView from rest_framework.response import Response from django.db.models import Avg, Sum, F, FloatField, Min, Max @@ -56,6 +56,14 @@ class TopScorersbySeasonList(generics.ListAPIView): season = self.kwargs['season'] return PlayerData.objects.filter(season=season).order_by('-PTS')[:20] +# Fetch Top 20 players by total PTS for season. +class TopScorersbySeasonTotalsList(generics.ListAPIView): + serializer_class = PlayerTotalsDataSerializer + + def get_queryset(self): + season = self.kwargs['season'] + return PlayerTotalsData.objects.filter(season=season).order_by('-PTS')[:20] + # Fetch and calculate the average 3P made, 3P attemps, 2P made, 2P attempts for all players in each season. # Will use APIview here instead of generics.ListAPIView to avoid having to create a serializer to generate the queryset. avg_three_made and avg_two_made are new data points at the time of creation when compared to the per_game model. @@ -94,6 +102,16 @@ class TopAssistsBySeasonList(generics.ListAPIView): def get_queryset(self): season = self.kwargs['season'] return PlayerData.objects.filter(season=season).order_by('-AST')[:20] + +# Fetch Top 20 players by AST totals DESC for the season + +class TopAssistsBySeasonTotalsList(generics.ListAPIView): + serializer_class = PlayerPlayoffTotalsDataSerializer + + def get_queryset(self): + season = self.kwargs['season'] + return PlayerTotalsData.objects.filter(season=season) + # Fetch Top 20 players by TRB DESC for season specified.