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