예제 #1
0
    def get(self, request, year, week_number, player_id):

        if self.__bad_year_or_week_number(year, week_number):
            data = {'year': year, 'week_number': week_number}
            return render(request, "pick10/bad_week.html", data, status=400)

        if not (self.__is_player_id_valid(player_id)):
            data = {'player_id': player_id, 'error': 'bad_id'}
            return render(request, "pick10/bad_player.html", data, status=400)

        year = int(year)
        week_number = int(week_number)
        player_id = int(player_id)
        d = Database()

        if not (self.__is_player_in_year(player_id, year)):
            data = {'year': year, 'player_id': player_id, 'error': 'bad_year'}
            return render(request, "pick10/bad_player.html", data, status=400)

        if d.is_week_being_setup(year, week_number):
            data = {'error': 'week_not_setup'}
            return render(request, "pick10/bad_player.html", data, status=400)

        access = UserAccess(request.user)

        # get the timezone for displaying the kickoff date and pick deadline
        if access.get_profile() == None:
            timezone = 'US/Eastern'
        else:
            timezone = access.get_profile().preferredtz

        # TODO tests
        if self.__hide_player_results(access, player_id, year, week_number):
            pick_deadline_utc = d.get_pick_deadline(year, week_number)
            pick_deadline = self.__format_pick_deadline(
                pick_deadline_utc, timezone)
            data = {
                'year': year,
                'player_id': player_id,
                'error': 'before_pick_deadline',
                'deadline': pick_deadline
            }
            return render(request, "pick10/bad_player.html", data)

        use_private_names = access.is_private_user()

        calc = CalculatePlayerResults(year, week_number, player_id,
                                      use_private_names)
        summary = calc.get_player_summary()
        results = calc.get_results()

        self.set_game_status_params(results, timezone)

        years_in_pool = sorted(d.get_years(), reverse=True)
        sidebar = render_to_string("pick10/year_sidebar.html", {
            'years_in_pool': years_in_pool,
            'year': year
        })

        params = dict()
        params['year'] = year
        params['week_number'] = week_number
        params['weeks_in_year'] = d.get_week_numbers(year)
        params['years_in_pool'] = years_in_pool
        params['summary'] = summary
        params['results'] = results
        params['FINAL'] = FINAL
        params['IN_PROGRESS'] = IN_PROGRESS
        params['NOT_STARTED'] = NOT_STARTED
        params['side_block_content'] = sidebar

        WeekNavbar(year, week_number, 'player_results',
                   request.user).add_parameters(params)

        return render(request, "pick10/player_results.html", params)