예제 #1
0
    def __show_week_results(self):
        # show week results once the pool has started
        d = Database()
        pool_state = d.get_pool_state(self.year)
        if pool_state == "invalid" or pool_state == "not_started":
            return False

        return True
예제 #2
0
    def __show_enter_picks(self):
        user_not_linked_to_player = self.player_id == None
        if user_not_linked_to_player:
            return False

        d = Database()
        pool_state = d.get_pool_state(self.year)
        if pool_state == "invalid" or pool_state == "not_started" or pool_state == "week_setup":
            return False

        week_state = Database().get_week_state(self.year, self.week_number)
        if week_state == NOT_STARTED:
            return True

        # enter picks page link still shows up if pick deadline has expired
        # this is so that the user can know that the deadline has expired

        return False
예제 #3
0
 def test_check_overall_results_weekfinal_page(self):
     self.utils.overall_results_page(2013)
     db = Database()
     self.assertEqual(db.get_pool_state(2013), 'week_final')
     soup = BeautifulSoup(self.browser.page_source, 'lxml')
     tags = soup.find_all(id='weekfinal-pool-state')
     self.assertEqual(len(tags), 1)
     self.assertEqual(tags[0].text, 'week 2 final')
     all_ids_counter = Counter(
         [elem.get('id') for elem in soup.find_all(id=True)])
     duplicate_ids = [
         id for id in all_ids_counter if all_ids_counter[id] > 1
     ]
     self.longMessage = True
     self.assertEqual(
         duplicate_ids, [],
         'The following id attributes are duplicate: \n%s' % '\n'.join(
             ['%s: %d' % (id, all_ids_counter[id])
              for id in duplicate_ids]))
     self.test_db.delete_database()
예제 #4
0
 def test_check_overall_results_enterpicks_page(self):
     self.test_db.setup_week_not_started(2013, 3)
     self.utils.set_pick_deadline_not_expired(2013, 3)
     self.utils.unlock_picks(2013, 3)
     self.utils.overall_results_page(2013)
     db = Database()
     self.assertEqual(db.get_pool_state(2013), 'enter_picks')
     soup = BeautifulSoup(self.browser.page_source, 'lxml')
     tags = soup.find_all(id='enterpicks-pool-state')
     self.assertEqual(len(tags), 1)
     self.assertEqual(tags[0].text, 'currently entering picks for week 3')
     all_ids_counter = Counter(
         [elem.get('id') for elem in soup.find_all(id=True)])
     duplicate_ids = [
         id for id in all_ids_counter if all_ids_counter[id] > 1
     ]
     self.longMessage = True
     self.assertEqual(
         duplicate_ids, [],
         'The following id attributes are duplicate: \n%s' % '\n'.join(
             ['%s: %d' % (id, all_ids_counter[id])
              for id in duplicate_ids]))
     self.test_db.delete_database()
예제 #5
0
    def get(self,request,year,use_private_names=None,use_memcache=True): 
        # TODO how to get final pool state?

        year = int(year)
        loading_memcache = request == None
        d = Database()

        if not(d.is_year_valid(year)):
            assert not loading_memcache,"When loading memcache, year needs to be valid "
            data={'year':year}
            return render(request,"pick10/bad_year.html",data,status=400)

        if loading_memcache:
            access = None
        else:
            access = UserAccess(request.user)

        use_private_names = self.__determine_private_access(access,use_private_names)

        # setup memcache parameters
        if use_private_names:
            body_key = "overall_private_%d" % (year)
        else:
            body_key = "overall_public_%d" % (year)

        pool_state = d.get_pool_state(year)

        weeks_in_year = d.get_week_numbers(year)
        last_week_number = weeks_in_year[-1]

        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})

        if pool_state == "week_setup":    # use last weeks results
            weeks_in_year.remove(last_week_number)
            last_week_number = last_week_number - 1

        # What if we need to go back a year?
        if last_week_number == 0:
            year -= 1
            pool_state = d.get_pool_state(year)
            weeks_in_year = d.get_week_numbers(year)
            last_week_number = weeks_in_year[-1]

        # look for hit in the memcache
        if not loading_memcache and use_memcache:
            body = cache.get(body_key)
            memcache_hit = body != None
            if memcache_hit:
                data = {'body_content':body,'side_block_content':sidebar,'year':year,'weeks_in_year':weeks_in_year }
                self.__set_player_id(access,data)
                WeekNavbar(year,last_week_number,'overall',request.user).add_parameters(data)
                return render(request,"pick10/overall_results.html",data)

        years_in_pool = sorted(d.get_years(),reverse=True)

        if pool_state == "not_started":
            players = d.load_players(year)

            data={'year':year, 'num_players':len(players)}
            body = render_to_string("pick10/overall_not_started.html",data)
            cache.set(body_key,body)

            if loading_memcache:
                return

            data = {'body_content':body,'side_block_content':sidebar,'year':year }
            WeekNavbar(year,last_week_number,'overall',request.user).add_parameters(data)
            return render(request,"pick10/overall_results.html",data)

        completed_games = calc_completed_games(year)
        self.cor = CalculateOverallResults(year,completed_games,use_private_names,use_weeks=weeks_in_year)
        results = self.cor.get_results()

        content_params = dict()
        content_params['year'] = year
        content_params['weeks_in_year'] = weeks_in_year
        content_params['pool_state'] = pool_state
        content_params['results'] = results
        content_params['last_week_number'] = last_week_number

        self.__render_file = "pick10/overall_results_combined.html"

        params = dict()
        params['year'] = year
        params['weeks_in_year'] = weeks_in_year
        params['years_in_pool'] = years_in_pool
        params['last_week_number'] = weeks_in_year[-1]
        params['pool_state'] = pool_state
        params['results'] = results
        params['content'] = self.__initial_content(content_params)
        params['sorted_by_overall'] = self.__sort_by_overall(content_params)
        params['sorted_by_overall_reversed'] = self.__sort_by_overall_reversed(content_params)
        params['sorted_by_players'] = self.__sort_by_players(content_params)
        params['sorted_by_players_reversed'] = self.__sort_by_players_reversed(content_params)

        if pool_state == "week_not_started":
            params['sorted_by_projected'] = ""
            params['sorted_by_projected_reversed'] = ""
            params['sorted_by_possible'] = self.__sort_by_overall_possible(content_params)
            params['sorted_by_possible_reversed'] = self.__sort_by_overall_possible_reversed(content_params)
        elif pool_state == "week_final":
            params['sorted_by_projected'] = ""
            params['sorted_by_projected_reversed'] = ""
            params['sorted_by_possible'] = self.__sort_by_overall_possible(content_params)
            params['sorted_by_possible_reversed'] = self.__sort_by_overall_possible_reversed(content_params)
        elif pool_state == "week_in_progress":
            params['sorted_by_projected'] = self.__sort_by_overall_projected(content_params)
            params['sorted_by_projected_reversed'] = self.__sort_by_overall_projected_reversed(content_params)
            params['sorted_by_possible'] = self.__sort_by_overall_possible(content_params)
            params['sorted_by_possible_reversed'] = self.__sort_by_overall_possible_reversed(content_params)
        else:
            params['sorted_by_projected'] = ""
            params['sorted_by_projected_reversed'] = ""
            params['sorted_by_possible'] = ""
            params['sorted_by_possible_reversed'] = ""

        body = render_to_string("pick10/overall_results_body.html",params)
        cache.set(body_key,body)

        if loading_memcache:
            return

        data = {'body_content':body,'side_block_content':sidebar,'year':year,'weeks_in_year':weeks_in_year }
        self.__set_player_id(access,data)
        WeekNavbar(year,last_week_number,'overall',request.user).add_parameters(data)
        return render(request,"pick10/overall_results.html",data)
 def __get_pool_state(self,year):
     d = Database()
     pool_state = d.get_pool_state(year)
     return pool_state
 def __get_pool_state(self, year):
     d = Database()
     pool_state = d.get_pool_state(year)
     return pool_state