def _render(self, *args, **kw): kickoff_datetime_est = datetime.datetime.strptime( self.template_values['kickoff_datetime'], "%Y-%m-%dT%H:%M:%S" ) if 'kickoff_datetime' in self.template_values else None kickoff_datetime_utc = pytz.utc.localize(kickoff_datetime_est + datetime.timedelta(hours=5)) special_webcasts = FirebasePusher.get_special_webcasts() is_kickoff = datetime.datetime.now( ) >= kickoff_datetime_est - datetime.timedelta( days=1) # turn on 1 day before week_events = EventHelper.getWeekEvents() self.template_values.update({ 'events': week_events, 'is_kickoff': is_kickoff, 'kickoff_datetime_est': kickoff_datetime_est, 'kickoff_datetime_utc': kickoff_datetime_utc, "any_webcast_online": any(w.get('status') == 'online' for w in special_webcasts), "special_webcasts": special_webcasts, }) path = os.path.join(os.path.dirname(__file__), "../templates/index_kickoff.html") return template.render(path, self.template_values)
def _render(self, *args, **kw): special_webcasts_future = Sitevar.get_by_id_async('gameday.special_webcasts') special_webcasts_temp = special_webcasts_future.get_result() if special_webcasts_temp: special_webcasts_temp = special_webcasts_temp.contents.get("webcasts", []) else: special_webcasts_temp = [] special_webcasts = [] for webcast in special_webcasts_temp: toAppend = {} for key, value in webcast.items(): toAppend[str(key)] = str(value) special_webcasts.append(toAppend) ongoing_events = [] ongoing_events_w_webcasts = [] week_events = EventHelper.getWeekEvents() for event in week_events: if event.now: ongoing_events.append(ModelToDict.eventConverter(event)) if event.webcast: ongoing_events_w_webcasts.append(ModelToDict.eventConverter(event)) webcasts_json = { 'special_webcasts': special_webcasts, 'ongoing_events': ongoing_events, 'ongoing_events_w_webcasts': ongoing_events_w_webcasts } self.template_values.update({ 'webcasts_json': json.dumps(webcasts_json) }) path = os.path.join(os.path.dirname(__file__), '../templates/gameday2.html') return template.render(path, self.template_values)
def _render(self, *args, **kw): week_events = EventHelper.getWeekEvents() self.template_values.update({"events": week_events}) path = os.path.join(os.path.dirname(__file__), "../templates/index_competitionseason.html") return template.render(path, self.template_values)
def _render(self, *args, **kw): week_events = EventHelper.getWeekEvents() year = datetime.datetime.now().year special_webcasts = FirebasePusher.get_special_webcasts() self.template_values.update({ "events": week_events, "year": year, "any_webcast_online": any(w.get('status') == 'online' for w in special_webcasts), "special_webcasts": special_webcasts, }) insights = ndb.get_multi([ ndb.Key(Insight, Insight.renderKeyName(year, insight_name)) for insight_name in Insight.INSIGHT_NAMES.values() ]) for insight in insights: if insight: self.template_values[insight.name] = insight path = os.path.join(os.path.dirname(__file__), '../templates/index_insights.html') return template.render(path, self.template_values)
def _render(self, *args, **kw): week_events = EventHelper.getWeekEvents() popular_teams_events = TeamHelper.getPopularTeamsEvents(week_events) # Only show special webcasts that aren't also hosting an event special_webcasts = [] for special_webcast in FirebasePusher.get_special_webcasts(): add = True for event in week_events: if event.now and event.webcast: for event_webcast in event.webcast: if (special_webcast.get('type', '') == event_webcast.get('type', '') and special_webcast.get('channel', '') == event_webcast.get('channel', '') and special_webcast.get('file', '') == event_webcast.get('file', '')): add = False break if not add: break if add: special_webcasts.append(special_webcast) self.template_values.update({ "events": week_events, "any_webcast_online": any(w.get('status') == 'online' for w in special_webcasts), "special_webcasts": special_webcasts, "popular_teams_events": popular_teams_events, }) path = os.path.join(os.path.dirname(__file__), '../templates/index_competitionseason.html') return template.render(path, self.template_values)
def _update_live_events_helper(cls): week_events = EventHelper.getWeekEvents() events_by_key = {} live_events = [] for event in week_events: if event.now: event._webcast = event.current_webcasts # Only show current webcasts for webcast in event.webcast: WebcastOnlineHelper.add_online_status_async(webcast) events_by_key[event.key.id()] = event if event.within_a_day: live_events.append(event) # To get Champ events to show up before they are actually going on forced_live_events = Sitevar.get_or_insert( 'forced_live_events', values_json=json.dumps([])) for event in ndb.get_multi([ndb.Key('Event', ekey) for ekey in forced_live_events.contents]): if event.webcast: for webcast in event.webcast: WebcastOnlineHelper.add_online_status_async(webcast) events_by_key[event.key.id()] = event # # Add in the Fake TBA BlueZone event (watch for circular imports) # from helpers.bluezone_helper import BlueZoneHelper # bluezone_event = BlueZoneHelper.update_bluezone(live_events) # if bluezone_event: # for webcast in bluezone_event.webcast: # WebcastOnlineHelper.add_online_status_async(webcast) # events_by_key[bluezone_event.key_name] = bluezone_event return events_by_key
def _render(self, *args, **kw): week_events = EventHelper.getWeekEvents() self.template_values.update({ "events": week_events, }) path = os.path.join(os.path.dirname(__file__), '../templates/index_offseason.html') return template.render(path, self.template_values)
def _render(self, *args, **kw): week_events = EventHelper.getWeekEvents() template_values = { "events": week_events, } path = os.path.join(os.path.dirname(__file__), '../templates/index_competitionseason.html') return template.render(path, template_values)
def _render(self, *args, **kw): week_events = EventHelper.getWeekEvents() template_values = { "events": week_events, } path = os.path.join(os.path.dirname(__file__), '../templates/index_competitionseason.html') return template.render(path, template_values)
def _render(self, *args, **kw): week_events = EventHelper.getWeekEvents() special_webcasts = FirebasePusher.get_special_webcasts() self.template_values.update({ "events": week_events, "any_webcast_online": any(w.get('status') == 'online' for w in special_webcasts), "special_webcasts": special_webcasts, }) path = os.path.join(os.path.dirname(__file__), '../templates/index_competitionseason.html') return template.render(path, self.template_values)
def _render(self, *args, **kw): self.template_values.update({ 'endbuild_datetime_est': SeasonHelper.stop_build_datetime_est(), 'endbuild_datetime_utc': SeasonHelper.stop_build_datetime_utc(), 'events': EventHelper.getWeekEvents(), }) return jinja2_engine.render('index/index_buildseason.html', self.template_values)
def _render(self, *args, **kw): week_events = EventHelper.getWeekEvents() special_webcasts = FirebasePusher.get_special_webcasts() self.template_values.update({ "events": week_events, "any_webcast_online": any(w.get('status') == 'online' for w in special_webcasts), "special_webcasts": special_webcasts, }) path = os.path.join(os.path.dirname(__file__), '../templates/index_competitionseason.html') return template.render(path, self.template_values)
def _render(self, *args, **kw): endbuild_datetime_est = datetime.datetime(2017, 2, 21, 23, 59) endbuild_datetime_utc = endbuild_datetime_est + datetime.timedelta(hours=5) week_events = EventHelper.getWeekEvents() self.template_values.update({ 'endbuild_datetime_est': endbuild_datetime_est, 'endbuild_datetime_utc': endbuild_datetime_utc, 'events': week_events, }) path = os.path.join(os.path.dirname(__file__), "../templates/index_buildseason.html") return template.render(path, self.template_values)
def _render(self, *args, **kw): endbuild_datetime_est = datetime.datetime(2016, 2, 23, 23, 59) endbuild_datetime_utc = endbuild_datetime_est + datetime.timedelta(hours=5) week_events = EventHelper.getWeekEvents() self.template_values.update({ 'endbuild_datetime_est': endbuild_datetime_est, 'endbuild_datetime_utc': endbuild_datetime_utc, 'events': week_events, }) path = os.path.join(os.path.dirname(__file__), "../templates/index_buildseason.html") return template.render(path, self.template_values)
def _render(self, *args, **kw): week_events = EventHelper.getWeekEvents() template_values = { "events": week_events, } insights = ndb.get_multi([ndb.Key(Insight, Insight.renderKeyName(2013, insight_name)) for insight_name in Insight.INSIGHT_NAMES.values()]) for insight in insights: if insight: template_values[insight.name] = insight path = os.path.join(os.path.dirname(__file__), '../templates/index_insights.html') return template.render(path, template_values)
def _render(self, *args, **kw): special_webcasts_future = Sitevar.get_by_id_async( 'gameday.special_webcasts') special_webcasts_temp = special_webcasts_future.get_result() if special_webcasts_temp: special_webcasts_temp = special_webcasts_temp.contents.get( "webcasts", []) else: special_webcasts_temp = [] special_webcasts = [] special_webcast_keys = set() for webcast in special_webcasts_temp: toAppend = {} for key, value in webcast.items(): toAppend[str(key)] = str(value) special_webcasts.append(toAppend) special_webcast_keys.add(webcast['key_name']) ongoing_events = [] ongoing_events_w_webcasts = [] week_events = EventHelper.getWeekEvents() for event in week_events: if event.now and event.key.id() not in special_webcast_keys: ongoing_events.append(event) if event.webcast: valid = [] for webcast in event.webcast: if 'type' in webcast and 'channel' in webcast: event_webcast = {'event': event} valid.append(event_webcast) # Add webcast numbers if more than one for an event if len(valid) > 1: count = 1 for event in valid: event['count'] = count count += 1 ongoing_events_w_webcasts += valid self.template_values.update({ 'special_webcasts': special_webcasts, 'ongoing_events': ongoing_events, 'ongoing_events_w_webcasts': ongoing_events_w_webcasts }) path = os.path.join(os.path.dirname(__file__), '../templates/gameday.html') return template.render(path, self.template_values)
def _render(self, *args, **kw): events = EventHelper.getWeekEvents() webcasts = [] for event in events: webcasts.append({ "key": event.key_name, "name": event.name, "webcast": event.webcast, }) template_values = {'webcasts': webcasts} path = os.path.join(os.path.dirname(__file__), '../templates/gameday2.html') return template.render(path, template_values)
def _render(self, *args, **kw): week_events = EventHelper.getWeekEvents() year = datetime.datetime.now().year self.template_values.update({ "events": week_events, "year": year, }) insights = ndb.get_multi([ndb.Key(Insight, Insight.renderKeyName(year, insight_name)) for insight_name in Insight.INSIGHT_NAMES.values()]) for insight in insights: if insight: self.template_values[insight.name] = insight path = os.path.join(os.path.dirname(__file__), '../templates/index_insights.html') return template.render(path, self.template_values)
def _render(self, *args, **kw): kickoff_datetime_utc = datetime.datetime.strptime( self.template_values['kickoff_datetime'], "%Y-%m-%dT%H:%M:%S" ) if 'kickoff_datetime' in self.template_values else None week_events = EventHelper.getWeekEvents() special_webcasts = FirebasePusher.get_special_webcasts() self.template_values.update({ "events": week_events, 'kickoff_datetime_utc': kickoff_datetime_utc, "any_webcast_online": any(w.get('status') == 'online' for w in special_webcasts), "special_webcasts": special_webcasts, }) path = os.path.join(os.path.dirname(__file__), '../templates/index_offseason.html') return template.render(path, self.template_values)
def _render(self, *args, **kw): kickoff_datetime_utc = datetime.datetime.strptime( self.template_values['kickoff_datetime'], "%Y-%m-%dT%H:%M:%S" ) if 'kickoff_datetime' in self.template_values else None week_events = EventHelper.getWeekEvents() special_webcasts = FirebasePusher.get_special_webcasts() self.template_values.update({ "events": week_events, 'kickoff_datetime_utc': kickoff_datetime_utc, "any_webcast_online": any(w.get('status') == 'online' for w in special_webcasts), "special_webcasts": special_webcasts, }) path = os.path.join(os.path.dirname(__file__), '../templates/index_offseason.html') return template.render(path, self.template_values)
def _render(self, *args, **kw): week_events = EventHelper.getWeekEvents() year = datetime.datetime.now().year self.template_values.update({ "events": week_events, "year": year, }) insights = ndb.get_multi([ndb.Key(Insight, Insight.renderKeyName(year, insight_name)) for insight_name in Insight.INSIGHT_NAMES.values()]) for insight in insights: if insight: self.template_values[insight.name] = insight path = os.path.join(os.path.dirname(__file__), '../templates/index_insights.html') return template.render(path, self.template_values)
def _render(self, *args, **kw): endbuild_time_str = self.template_values.get('build_season_end', '2018-2-20T23:59:00') endbuild_datetime_est = datetime.datetime.strptime(endbuild_time_str, '%Y-%m-%dT%H:%M:%S') endbuild_datetime_utc = pytz.utc.localize( endbuild_datetime_est + datetime.timedelta(hours=5)) week_events = EventHelper.getWeekEvents() self.template_values.update({ 'endbuild_datetime_est': endbuild_datetime_est, 'endbuild_datetime_utc': endbuild_datetime_utc, 'events': week_events, }) path = os.path.join(os.path.dirname(__file__), "../templates/index_buildseason.html") return template.render(path, self.template_values)
def _render(self, *args, **kw): endbuild_datetime_est = datetime.datetime.strptime( self.template_values['build_season_end'], "%Y-%m-%dT%H:%M:%S" ) if 'build_season_end' in self.template_values else SeasonHelper.stop_build_date() endbuild_datetime_utc = pytz.utc.localize( endbuild_datetime_est + datetime.timedelta(hours=5)) week_events = EventHelper.getWeekEvents() self.template_values.update({ 'endbuild_datetime_est': endbuild_datetime_est, 'endbuild_datetime_utc': endbuild_datetime_utc, 'events': week_events, }) path = os.path.join(os.path.dirname(__file__), "../templates/index_buildseason.html") return template.render(path, self.template_values)
def _render(self, *args, **kw): events = EventHelper.getWeekEvents() webcasts = [] for event in events: webcasts.append({ "key": event.key_name, "name": event.name, "webcast": event.webcast, }) template_values = {'webcasts': webcasts} path = os.path.join(os.path.dirname(__file__), '../templates/gameday2.html') return template.render(path, template_values)
def _render(self, *args, **kw): special_webcasts = FirebasePusher.get_special_webcasts() self.template_values.update({ "events": EventHelper.getWeekEvents(), 'kickoff_datetime_utc': SeasonHelper.kickoff_datetime_utc(), "any_webcast_online": any(w.get('status') == 'online' for w in special_webcasts), "special_webcasts": special_webcasts, }) return jinja2_engine.render('index/index_offseason.html', self.template_values)
def _render(self, *args, **kw): endbuild_datetime_est = datetime.datetime.strptime( self.template_values['build_season_end'], "%Y-%m-%dT%H:%M:%S" ) if 'build_season_end' in self.template_values else SeasonHelper.stop_build_date() endbuild_datetime_utc = pytz.utc.localize( endbuild_datetime_est + datetime.timedelta(hours=5)) week_events = EventHelper.getWeekEvents() self.template_values.update({ 'endbuild_datetime_est': endbuild_datetime_est, 'endbuild_datetime_utc': endbuild_datetime_utc, 'events': week_events, }) path = os.path.join(os.path.dirname(__file__), "../templates/index_buildseason.html") return template.render(path, self.template_values)
def _render(self, *args, **kw): week_events = EventHelper.getWeekEvents() template_values = { "events": week_events, } insights = ndb.get_multi([ ndb.Key(Insight, Insight.renderKeyName(2013, insight_name)) for insight_name in Insight.INSIGHT_NAMES.values() ]) for insight in insights: if insight: template_values[insight.name] = insight path = os.path.join(os.path.dirname(__file__), '../templates/index_insights.html') return template.render(path, template_values)
def _render(self, *args, **kw): kickoff_datetime_est = datetime.datetime(2018, 1, 6, 10, 00) kickoff_datetime_utc = pytz.utc.localize( kickoff_datetime_est + datetime.timedelta(hours=5)) is_kickoff = datetime.datetime.now() >= kickoff_datetime_est - datetime.timedelta(days=1) # turn on 1 day before week_events = EventHelper.getWeekEvents() self.template_values.update({ 'events': week_events, 'is_kickoff': is_kickoff, 'kickoff_datetime_est': kickoff_datetime_est, 'kickoff_datetime_utc': kickoff_datetime_utc, }) path = os.path.join(os.path.dirname(__file__), "../templates/index_kickoff.html") return template.render(path, self.template_values)
def _render(self, *args, **kw): effective_season_year = SeasonHelper.effective_season_year() special_webcasts = FirebasePusher.get_special_webcasts() self.template_values.update({ 'seasonstart_datetime_utc': SeasonHelper.first_event_datetime_utc(effective_season_year), 'events': EventHelper.getWeekEvents(), "any_webcast_online": any(w.get('status') == 'online' for w in special_webcasts), "special_webcasts": special_webcasts, }) return jinja2_engine.render('index/index_buildseason.html', self.template_values)
def _render(self, *args, **kw): kickoff_datetime_est = datetime.datetime(2018, 1, 6, 10, 00) kickoff_datetime_utc = pytz.utc.localize( kickoff_datetime_est + datetime.timedelta(hours=5)) is_kickoff = datetime.datetime.now() >= kickoff_datetime_est - datetime.timedelta(days=1) # turn on 1 day before week_events = EventHelper.getWeekEvents() self.template_values.update({ 'events': week_events, 'is_kickoff': is_kickoff, 'kickoff_datetime_est': kickoff_datetime_est, 'kickoff_datetime_utc': kickoff_datetime_utc, }) path = os.path.join(os.path.dirname(__file__), "../templates/index_kickoff.html") return template.render(path, self.template_values)
def _render(self, *args, **kw): week_events = EventHelper.getWeekEvents() year = datetime.datetime.now().year special_webcasts = FirebasePusher.get_special_webcasts() self.template_values.update({ "events": week_events, "year": year, "any_webcast_online": any(w.get('status') == 'online' for w in special_webcasts), "special_webcasts": special_webcasts, }) insights = ndb.get_multi([ndb.Key(Insight, Insight.renderKeyName(year, insight_name)) for insight_name in Insight.INSIGHT_NAMES.values()]) for insight in insights: if insight: self.template_values[insight.name] = insight path = os.path.join(os.path.dirname(__file__), '../templates/index_insights.html') return template.render(path, self.template_values)
def _render(self, *args, **kw): special_webcasts_future = Sitevar.get_by_id_async('gameday.special_webcasts') special_webcasts_temp = special_webcasts_future.get_result() if special_webcasts_temp: special_webcasts_temp = special_webcasts_temp.contents.get("webcasts", []) else: special_webcasts_temp = [] special_webcasts = [] special_webcast_keys = set() for webcast in special_webcasts_temp: toAppend = {} for key, value in webcast.items(): toAppend[str(key)] = str(value) special_webcasts.append(toAppend) special_webcast_keys.add(webcast['key_name']) ongoing_events = [] ongoing_events_w_webcasts = [] week_events = EventHelper.getWeekEvents() for event in week_events: if event.now and event.key.id() not in special_webcast_keys: ongoing_events.append(event) if event.webcast: valid = [] for webcast in event.webcast: if 'type' in webcast and 'channel' in webcast: event_webcast = {'event': event} valid.append(event_webcast) # Add webcast numbers if more than one for an event if len(valid) > 1: count = 1 for event in valid: event['count'] = count count += 1 ongoing_events_w_webcasts += valid self.template_values.update({ 'special_webcasts': special_webcasts, 'ongoing_events': ongoing_events, 'ongoing_events_w_webcasts': ongoing_events_w_webcasts }) path = os.path.join(os.path.dirname(__file__), '../templates/gameday.html') return template.render(path, self.template_values)
def _render(self, *args, **kw): special_webcasts_future = Sitevar.get_by_id_async("gameday.special_webcasts") special_webcasts_temp = special_webcasts_future.get_result() if special_webcasts_temp: special_webcasts_temp = special_webcasts_temp.contents else: special_webcasts_temp = {} special_webcasts = [] for webcast in special_webcasts_temp.values(): toAppend = {} for key, value in webcast.items(): toAppend[str(key)] = str(value) special_webcasts.append(toAppend) ongoing_events = [] ongoing_events_w_webcasts = [] week_events = EventHelper.getWeekEvents() for event in week_events: if event.within_a_day: ongoing_events.append(event) if event.webcast: valid = [] for webcast in event.webcast: if "type" in webcast and "channel" in webcast: event_webcast = {"event": event} valid.append(event_webcast) # Add webcast numbers if more than one for an event if len(valid) > 1: count = 1 for event in valid: event["count"] = count count += 1 ongoing_events_w_webcasts += valid self.template_values.update( { "special_webcasts": special_webcasts, "ongoing_events": ongoing_events, "ongoing_events_w_webcasts": ongoing_events_w_webcasts, } ) path = os.path.join(os.path.dirname(__file__), "../templates/gameday.html") return template.render(path, self.template_values)
def _render(self, *args, **kw): special_webcasts = FirebasePusher.get_special_webcasts() effective_season_year = SeasonHelper.effective_season_year() self.template_values.update({ 'events': EventHelper.getWeekEvents(), 'is_kickoff': SeasonHelper.is_kickoff_at_least_one_day_away( year=effective_season_year), 'kickoff_datetime_est': SeasonHelper.kickoff_datetime_est(effective_season_year), 'kickoff_datetime_utc': SeasonHelper.kickoff_datetime_utc(effective_season_year), "any_webcast_online": any(w.get('status') == 'online' for w in special_webcasts), "special_webcasts": special_webcasts, }) return jinja2_engine.render('index/index_kickoff.html', self.template_values)
def _render(self, *args, **kw): kickoff_datetime_est = datetime.datetime.strptime( self.template_values['kickoff_datetime'], "%Y-%m-%dT%H:%M:%S" ) if 'kickoff_datetime' in self.template_values else None kickoff_datetime_utc = pytz.utc.localize( kickoff_datetime_est + datetime.timedelta(hours=5)) special_webcasts = FirebasePusher.get_special_webcasts() is_kickoff = datetime.datetime.now() >= kickoff_datetime_est - datetime.timedelta(days=1) # turn on 1 day before week_events = EventHelper.getWeekEvents() self.template_values.update({ 'events': week_events, 'is_kickoff': is_kickoff, 'kickoff_datetime_est': kickoff_datetime_est, 'kickoff_datetime_utc': kickoff_datetime_utc, "any_webcast_online": any(w.get('status') == 'online' for w in special_webcasts), "special_webcasts": special_webcasts, }) path = os.path.join(os.path.dirname(__file__), "../templates/index_kickoff.html") return template.render(path, self.template_values)
def _update_live_events_helper(cls): week_events = EventHelper.getWeekEvents() events_by_key = {} live_events = [] for event in week_events: if event.now: event._webcast = event.current_webcasts # Only show current webcasts for webcast in event.webcast: WebcastOnlineHelper.add_online_status_async(webcast) events_by_key[event.key.id()] = event if event.within_a_day: live_events.append(event) # Add in the Fake TBA BlueZone event (watch for circular imports) from helpers.bluezone_helper import BlueZoneHelper bluezone_event = BlueZoneHelper.update_bluezone(live_events) if bluezone_event: for webcast in bluezone_event.webcast: WebcastOnlineHelper.add_online_status_async(webcast) events_by_key[bluezone_event.key_name] = bluezone_event return events_by_key
def _render(self, *args, **kw): template_values = {} events_with_webcasts = [] for event in EventHelper.getWeekEvents(): if event.within_a_day and event.webcast: events_with_webcasts.append(event) events_with_webcasts_dict_list = [] for event in events_with_webcasts: events_with_webcasts_dict_list.append({ "event_name": event.name, "event_key": event.key_name, "webcast": event.webcast }) self.template_values.update({ 'events_with_webcasts': events_with_webcasts_dict_list }) path = os.path.join(os.path.dirname(__file__), '../templates/gameday2.html') return template.render(path, self.template_values)
def _render(self, *args, **kw): special_webcasts_future = Sitevar.get_by_id_async( 'gameday.special_webcasts') special_webcasts_temp = special_webcasts_future.get_result() if special_webcasts_temp: special_webcasts_temp = special_webcasts_temp.contents.get( "webcasts", []) else: special_webcasts_temp = [] special_webcasts = [] for webcast in special_webcasts_temp: toAppend = {} for key, value in webcast.items(): toAppend[str(key)] = str(value) special_webcasts.append(toAppend) ongoing_events = [] ongoing_events_w_webcasts = [] week_events = EventHelper.getWeekEvents() for event in week_events: if event.now: ongoing_events.append(ModelToDict.eventConverter(event)) if event.webcast: ongoing_events_w_webcasts.append( ModelToDict.eventConverter(event)) webcasts_json = { 'special_webcasts': special_webcasts, 'ongoing_events': ongoing_events, 'ongoing_events_w_webcasts': ongoing_events_w_webcasts } self.template_values.update( {'webcasts_json': json.dumps(webcasts_json)}) path = os.path.join(os.path.dirname(__file__), '../templates/gameday2.html') return template.render(path, self.template_values)
def _render(self, *args, **kw): week_events = EventHelper.getWeekEvents() popular_teams_events = TeamHelper.getPopularTeamsEvents(week_events) # Only show special webcasts that aren't also hosting an event special_webcasts = [] for special_webcast in FirebasePusher.get_special_webcasts(): add = True for event in week_events: if event.now and event.webcast: for event_webcast in event.webcast: if (special_webcast.get( 'type', '') == event_webcast.get('type', '') and special_webcast.get('channel', '') == event_webcast.get('channel', '') and special_webcast.get('file', '') == event_webcast.get('file', '')): add = False break if not add: break if add: special_webcasts.append(special_webcast) self.template_values.update({ "events": week_events, "any_webcast_online": any(w.get('status') == 'online' for w in special_webcasts), "special_webcasts": special_webcasts, "popular_teams_events": popular_teams_events, }) path = os.path.join(os.path.dirname(__file__), '../templates/index_competitionseason.html') return template.render(path, self.template_values)
def _render(self, *args, **kw): week_events = EventHelper.getWeekEvents() special_webcasts = FirebasePusher.get_special_webcasts() events = {} for event in week_events: events[event.key.id()] = event # Calculate popular teams # Get cached team keys event_team_keys = memcache.get_multi(events.keys(), namespace='event-team-keys') # Get uncached team keys to_query = set(events.keys()).difference(event_team_keys.keys()) event_teams_futures = [( event_key, EventTeam.query(EventTeam.event == ndb.Key(Event, event_key)).fetch_async(projection=[EventTeam.team]) ) for event_key in to_query] # Merge cached and uncached team keys for event_key, event_teams in event_teams_futures: event_team_keys[event_key] = [et.team.id() for et in event_teams.get_result()] memcache.set_multi(event_team_keys, 60*60*24, namespace='event-team-keys') team_keys = [] team_events = {} for event_key, event_team_keys in event_team_keys.items(): team_keys += event_team_keys for team_key in event_team_keys: team_events[team_key] = events[event_key] # Get cached counts team_favorite_counts = memcache.get_multi(team_keys, namespace='team-favorite-counts') # Get uncached counts to_count = set(team_keys).difference(team_favorite_counts.keys()) count_futures = [( team_key, Favorite.query(Favorite.model_key == team_key).count_async() ) for team_key in to_count] # Merge cached and uncached counts for team_key, count_future in count_futures: team_favorite_counts[team_key] = count_future.get_result() memcache.set_multi(team_favorite_counts, 60*60*24, namespace='team-favorite-counts') # Sort to get top popular teams popular_team_keys = [] for team_key, _ in sorted(team_favorite_counts.items(), key=lambda tc: -tc[1])[:25]: popular_team_keys.append(ndb.Key(Team, team_key)) popular_teams = sorted(ndb.get_multi(popular_team_keys), key=lambda team: team.team_number) popular_teams_events = [] for team in popular_teams: popular_teams_events.append((team, team_events[team.key.id()])) self.template_values.update({ "events": week_events, "any_webcast_online": any(w.get('status') == 'online' for w in special_webcasts), "special_webcasts": special_webcasts, "popular_teams_events": popular_teams_events, }) path = os.path.join(os.path.dirname(__file__), '../templates/index_competitionseason.html') return template.render(path, self.template_values)
def _render(self, *args, **kw): week_events = EventHelper.getWeekEvents() special_webcasts = FirebasePusher.get_special_webcasts() events = {} for event in week_events: events[event.key.id()] = event # Calculate popular teams # Get cached team keys event_team_keys = memcache.get_multi(events.keys(), namespace='event-team-keys') # Get uncached team keys to_query = set(events.keys()).difference(event_team_keys.keys()) event_teams_futures = [ (event_key, EventTeam.query( EventTeam.event == ndb.Key(Event, event_key)).fetch_async( projection=[EventTeam.team])) for event_key in to_query ] # Merge cached and uncached team keys for event_key, event_teams in event_teams_futures: event_team_keys[event_key] = [ et.team.id() for et in event_teams.get_result() ] memcache.set_multi(event_team_keys, 60 * 60 * 24, namespace='event-team-keys') team_keys = [] team_events = {} for event_key, event_team_keys in event_team_keys.items(): team_keys += event_team_keys for team_key in event_team_keys: team_events[team_key] = events[event_key] # Get cached counts team_favorite_counts = memcache.get_multi( team_keys, namespace='team-favorite-counts') # Get uncached counts to_count = set(team_keys).difference(team_favorite_counts.keys()) count_futures = [ (team_key, Favorite.query(Favorite.model_key == team_key).count_async()) for team_key in to_count ] # Merge cached and uncached counts for team_key, count_future in count_futures: team_favorite_counts[team_key] = count_future.get_result() memcache.set_multi(team_favorite_counts, 60 * 60 * 24, namespace='team-favorite-counts') # Sort to get top popular teams popular_team_keys = [] for team_key, _ in sorted(team_favorite_counts.items(), key=lambda tc: -tc[1])[:25]: popular_team_keys.append(ndb.Key(Team, team_key)) popular_teams = sorted(ndb.get_multi(popular_team_keys), key=lambda team: team.team_number) popular_teams_events = [] for team in popular_teams: popular_teams_events.append((team, team_events[team.key.id()])) self.template_values.update({ "events": week_events, "any_webcast_online": any(w.get('status') == 'online' for w in special_webcasts), "special_webcasts": special_webcasts, "popular_teams_events": popular_teams_events, }) path = os.path.join(os.path.dirname(__file__), '../templates/index_competitionseason.html') return template.render(path, self.template_values)
def _render(self, district_abbrev, year=None, explicit_year=False): district = DistrictQuery('{}{}'.format(year, district_abbrev)).fetch() if not district: self.abort(404) events_future = DistrictEventsQuery(district.key_name).fetch_async() # needed for district teams district_teams_future = DistrictTeamsQuery( district.key_name).fetch_async() # needed for valid_years history_future = DistrictHistoryQuery( district.abbreviation).fetch_async() # needed for valid_districts districts_in_year_future = DistrictsInYearQuery( district.year).fetch_async() # needed for active team statuses live_events = [] if year == datetime.datetime.now( ).year: # Only show active teams for current year live_events = EventHelper.getWeekEvents() live_eventteams_futures = [] for event in live_events: live_eventteams_futures.append( EventTeamsQuery(event.key_name).fetch_async()) events = events_future.get_result() EventHelper.sort_events(events) events_by_key = {} for event in events: events_by_key[event.key.id()] = event week_events = EventHelper.groupByWeek(events) valid_districts = set() districts_in_year = districts_in_year_future.get_result() for dist in districts_in_year: valid_districts.add((dist.display_name, dist.abbreviation)) valid_districts = sorted(valid_districts, key=lambda (name, _): name) teams = TeamHelper.sortTeams(district_teams_future.get_result()) team_keys = set([t.key.id() for t in teams]) num_teams = len(teams) middle_value = num_teams / 2 if num_teams % 2 != 0: middle_value += 1 teams_a, teams_b = teams[:middle_value], teams[middle_value:] # Currently Competing Team Status event_team_keys = [] for event, teams_future in zip(live_events, live_eventteams_futures): for team in teams_future.get_result(): if team.key.id() in team_keys: event_team_keys.append( ndb.Key(EventTeam, '{}_{}'.format( event.key.id(), team.key.id()))) # Should be in context cache ndb.get_multi(event_team_keys) # Warms context cache live_events_with_teams = [] for event, teams_future in zip(live_events, live_eventteams_futures): teams_and_statuses = [] has_teams = False for team in teams_future.get_result(): if team.key.id() in team_keys: has_teams = True event_team = EventTeam.get_by_id('{}_{}'.format( event.key.id(), team.key.id())) # Should be in context cache status_str = { 'alliance': EventTeamStatusHelper. generate_team_at_event_alliance_status_string( team.key.id(), event_team.status), 'playoff': EventTeamStatusHelper. generate_team_at_event_playoff_status_string( team.key.id(), event_team.status), } teams_and_statuses.append( (team, event_team.status, status_str)) if has_teams: teams_and_statuses.sort(key=lambda x: x[0].team_number) live_events_with_teams.append((event, teams_and_statuses)) live_events_with_teams.sort(key=lambda x: x[0].name) live_events_with_teams.sort( key=lambda x: EventHelper.distantFutureIfNoStartDate(x[0])) live_events_with_teams.sort( key=lambda x: EventHelper.distantFutureIfNoEndDate(x[0])) # Get valid years district_history = history_future.get_result() valid_years = map(lambda d: d.year, district_history) valid_years = sorted(valid_years) self.template_values.update({ 'explicit_year': explicit_year, 'year': year, 'valid_years': valid_years, 'valid_districts': valid_districts, 'district_name': district.display_name, 'district_abbrev': district_abbrev, 'week_events': week_events, 'events_by_key': events_by_key, 'rankings': district.rankings, 'advancement': district.advancement, 'teams_a': teams_a, 'teams_b': teams_b, 'live_events_with_teams': live_events_with_teams, }) return jinja2_engine.render('district_details.html', self.template_values)
def _render(self, district_abbrev, year=None, explicit_year=False): district = DistrictQuery('{}{}'.format(year, district_abbrev)).fetch() if not district: self.abort(404) events_future = DistrictEventsQuery(district.key_name).fetch_async() # needed for district teams district_teams_future = DistrictTeamsQuery(district.key_name).fetch_async() # needed for valid_years history_future = DistrictHistoryQuery(district.abbreviation).fetch_async() # needed for valid_districts districts_in_year_future = DistrictsInYearQuery(district.year).fetch_async() # needed for active team statuses live_events = [] if year == datetime.datetime.now().year: # Only show active teams for current year live_events = EventHelper.getWeekEvents() live_eventteams_futures = [] for event in live_events: live_eventteams_futures.append(EventTeamsQuery(event.key_name).fetch_async()) events = events_future.get_result() EventHelper.sort_events(events) events_by_key = {} for event in events: events_by_key[event.key.id()] = event week_events = EventHelper.groupByWeek(events) valid_districts = set() districts_in_year = districts_in_year_future.get_result() for dist in districts_in_year: valid_districts.add((dist.display_name, dist.abbreviation)) valid_districts = sorted(valid_districts, key=lambda (name, _): name) teams = TeamHelper.sortTeams(district_teams_future.get_result()) team_keys = set([t.key.id() for t in teams]) num_teams = len(teams) middle_value = num_teams / 2 if num_teams % 2 != 0: middle_value += 1 teams_a, teams_b = teams[:middle_value], teams[middle_value:] # Currently Competing Team Status event_team_keys = [] for event, teams_future in zip(live_events, live_eventteams_futures): for team in teams_future.get_result(): if team.key.id() in team_keys: event_team_keys.append(ndb.Key(EventTeam, '{}_{}'.format(event.key.id(), team.key.id()))) # Should be in context cache ndb.get_multi(event_team_keys) # Warms context cache live_events_with_teams = [] for event, teams_future in zip(live_events, live_eventteams_futures): teams_and_statuses = [] has_teams = False for team in teams_future.get_result(): if team.key.id() in team_keys: has_teams = True event_team = EventTeam.get_by_id('{}_{}'.format(event.key.id(), team.key.id())) # Should be in context cache status_str = { 'alliance': EventTeamStatusHelper.generate_team_at_event_alliance_status_string(team.key.id(), event_team.status), 'playoff': EventTeamStatusHelper.generate_team_at_event_playoff_status_string(team.key.id(), event_team.status), } teams_and_statuses.append(( team, event_team.status, status_str )) if has_teams: teams_and_statuses.sort(key=lambda x: x[0].team_number) live_events_with_teams.append((event, teams_and_statuses)) live_events_with_teams.sort(key=lambda x: x[0].name) live_events_with_teams.sort(key=lambda x: EventHelper.distantFutureIfNoStartDate(x[0])) live_events_with_teams.sort(key=lambda x: EventHelper.distantFutureIfNoEndDate(x[0])) # Get valid years district_history = history_future.get_result() valid_years = map(lambda d: d.year, district_history) valid_years = sorted(valid_years) self.template_values.update({ 'explicit_year': explicit_year, 'year': year, 'valid_years': valid_years, 'valid_districts': valid_districts, 'district_name': district.display_name, 'district_abbrev': district_abbrev, 'week_events': week_events, 'events_by_key': events_by_key, 'rankings': district.rankings, 'advancement': district.advancement, 'teams_a': teams_a, 'teams_b': teams_b, 'live_events_with_teams': live_events_with_teams, }) return jinja2_engine.render('district_details.html', self.template_values)
def _render(self, district_abbrev, year=None, explicit_year=False): district_type = DistrictType.abbrevs[district_abbrev] event_keys = Event.query(Event.year == year, Event.event_district_enum == district_type).fetch(None, keys_only=True) if not event_keys: self.abort(404) # needed for district teams district_key = '{}{}'.format(year, district_abbrev) district_teams_future = DistrictTeamsQuery(district_key).fetch_async() # needed for valid_years all_cmp_event_keys_future = Event.query(Event.event_district_enum == district_type, Event.event_type_enum == EventType.DISTRICT_CMP).fetch_async(None, keys_only=True) # needed for valid_districts district_cmp_keys_future = Event.query(Event.year == year, Event.event_type_enum == EventType.DISTRICT_CMP).fetch_async(None, keys_only=True) # to compute valid_districts # Needed for active team statuses live_events = EventHelper.getWeekEvents() live_eventteams_futures = [] for event in live_events: live_eventteams_futures.append(EventTeamsQuery(event.key_name).fetch_async()) event_futures = ndb.get_multi_async(event_keys) event_team_keys_future = EventTeam.query(EventTeam.event.IN(event_keys)).fetch_async(None, keys_only=True) team_futures = ndb.get_multi_async(set([ndb.Key(Team, et_key.id().split('_')[1]) for et_key in event_team_keys_future.get_result()])) events = [event_future.get_result() for event_future in event_futures] EventHelper.sort_events(events) district_cmp_futures = ndb.get_multi_async(district_cmp_keys_future.get_result()) team_totals = DistrictHelper.calculate_rankings(events, team_futures, year) valid_districts = set() for district_cmp_future in district_cmp_futures: district_cmp = district_cmp_future.get_result() cmp_dis_type = district_cmp.event_district_enum if cmp_dis_type is None: logging.warning("District event {} has unknown district type!".format(district_cmp.key.id())) else: valid_districts.add((DistrictType.type_names[cmp_dis_type], DistrictType.type_abbrevs[cmp_dis_type])) valid_districts = sorted(valid_districts, key=lambda (name, _): name) teams = TeamHelper.sortTeams(district_teams_future.get_result()) num_teams = len(teams) middle_value = num_teams / 2 if num_teams % 2 != 0: middle_value += 1 teams_a, teams_b = teams[:middle_value], teams[middle_value:] # Currently Competing Team Status live_events_with_teams = EventTeamStatusHelper.buildEventTeamStatus(live_events, live_eventteams_futures, teams) live_events_with_teams.sort(key=lambda x: x[0].name) self.template_values.update({ 'explicit_year': explicit_year, 'year': year, 'valid_years': sorted(set([int(event_key.id()[:4]) for event_key in all_cmp_event_keys_future.get_result()])), 'valid_districts': valid_districts, 'district_name': DistrictType.type_names[district_type], 'district_abbrev': district_abbrev, 'events': events, 'team_totals': team_totals, 'teams_a': teams_a, 'teams_b': teams_b, 'live_events_with_teams': live_events_with_teams, }) path = os.path.join(os.path.dirname(__file__), '../templates/district_details.html') return template.render(path, self.template_values)