def form_valid(self, form):
     form.instance.user = self.request.user
     try:
         return super().form_valid(form)
     except IntegrityError:
         display_dates = get_form_details(self.request)
         game_id = display_dates[0].get("gamePk")
         home_details = get_boxscore(game_id, "home")
         away_details = get_boxscore(game_id, "away")
         game_date = get_game_date(game_id, 1)
         game_date = game_date.date().strftime("%m/%d/%Y")
         teams = get_teams(1)
         home_team = home_details.get("team")
         away_team = away_details.get("team")
         text = f"{home_team} vs {away_team} on {game_date}"
         user = self.request.user
         user = str(user).title()
         error = f"The game has already been added for user {user} <br> {text}"
         context = {
             "teams": teams,
             "pages": {
                 "header": "Add a Game"
             },
             "error": error,
         }
         return render(self.request,
                       "stadium_tracker/gamedetails_form.html",
                       context=context)
    def get(self, request, *args, **kwargs):
        form = GameDetailsForm()
        leagues = League.objects.all().order_by('mlb_api_league_id')
        teams = get_teams(1)
        display_dates = get_form_details(request)
        default_values = get_default_game(1)
        try:
            game_id = display_dates[0].get("gamePk")
            headline = get_game_recap(game_id, "headline")
            body = get_game_recap(game_id, "body")
            home_details = get_boxscore(game_id, "home")
            away_details = get_boxscore(game_id, "away")
            game_date = get_game_date(game_id, 1)

            form.fields["game_headline"].initial = headline
            form.fields["game_body"].initial = body
            form.fields["home_team"].initial = home_details.get("team")
            form.fields["home_hits"].initial = home_details.get("hits")
            form.fields["home_runs"].initial = home_details.get("runs")
            form.fields["home_errors"].initial = home_details.get("errors")
            form.fields["away_team"].initial = away_details.get("team")
            form.fields["away_hits"].initial = away_details.get("hits")
            form.fields["away_runs"].initial = away_details.get("runs")
            form.fields["away_errors"].initial = away_details.get("errors")
            form.fields["game_datetime"].initial = game_date
            form.fields["game_id"].initial = game_id
            form.fields["venue_id"].initial = get_venue_id(game_id, 1)
        except:
            pass

        context = {
            "form": form,
            "teams": teams,
            "games": display_dates,
            "test": request.GET,
            "pages": {
                "header": "Add a Game"
            },
            "default_values": default_values,
            "leagues": leagues,
            'request': request,
        }
        return render(request, "stadium_tracker/gamedetails_form.html",
                      context)
 def test_get_boxscore_away_not_full(self):
     x = get_boxscore(8060, "away")
     self.assertEqual(x.get("hits"), 5)
     self.assertEqual(x.get("runs"), 1)
     self.assertEqual(x.get("errors"), 1)
     self.assertEqual(x.get("team"), "Colorado Rockies")
 def test_get_boxscore_home_not_full(self):
     x = get_boxscore(8060, "home")
     self.assertEqual(x.get("hits"), 9)
     self.assertEqual(x.get("runs"), 2)
     self.assertEqual(x.get("errors"), 1)
     self.assertEqual(x.get("team"), "San Francisco Giants")
 def test_get_boxscore_away_full(self):
     x = get_boxscore(566063, "away")
     self.assertEqual(x.get("hits"), 9)
     self.assertEqual(x.get("runs"), 3)
     self.assertEqual(x.get("errors"), 0)
     self.assertEqual(x.get("team"), "Los Angeles Dodgers")
 def test_get_boxscore_home_full(self):
     x = get_boxscore(566063, "home")
     self.assertEqual(x.get("hits"), 3)
     self.assertEqual(x.get("runs"), 2)
     self.assertEqual(x.get("errors"), 0)
     self.assertEqual(x.get("team"), "New York Mets")