def get(self, key_name): df = DatafeedUsfirst() legacy_df = DatafeedUsfirstLegacy() team = df.getTeamDetails(Team.get_by_id(key_name)) if not team: logging.warning("getTeamDetails with DatafeedUsfirst for event id {} failed. Retrying with DatafeedUsfirstLegacy.".format(key_name)) team = legacy_df.getTeamDetails(Team.get_by_id(key_name)) else: legacy_team = legacy_df.getTeamDetails(Team.get_by_id(key_name)) if legacy_team is not None: team.rookie_year = legacy_team.rookie_year # only available on legacy df if team: team = TeamManipulator.createOrUpdate(team) success = True else: success = False template_values = { 'key_name': key_name, 'team': team, 'success': success, } path = os.path.join(os.path.dirname(__file__), '../templates/datafeeds/usfirst_team_details_get.html') self.response.out.write(template.render(path, template_values))
def setUp(self): self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_urlfetch_stub() self.testbed.init_memcache_stub() self.testbed.init_datastore_v3_stub() self.testbed.init_taskqueue_stub(root_path=".") self.datafeed = DatafeedUsfirstLegacy()
def get(self, key_name): # Combines data from three datafeeds with priorities: # 1) DatafeedFMSAPI # 2) DatafeedUsfirst (missing rookie year) # 3) DatafeedUsfirstLegacy (has all info) legacy_df = DatafeedUsfirstLegacy() usfirst_df = DatafeedUsfirst() fms_df = DatafeedFMSAPI('v2.0') # Start with lowest priority legacy_team = legacy_df.getTeamDetails(Team.get_by_id(key_name)) usfirst_team = usfirst_df.getTeamDetails(Team.get_by_id(key_name)) fms_details = fms_df.getTeamDetails(tba_config.MAX_YEAR, key_name) # Separate out the multiple models returned from FMSAPI call # Since we're only hitting one team at a time, the response won't # ever be paginated so we can ignore the possibility if fms_details and fms_details[0]: models, more_pages = fms_details fms_team, district_team, robot = models[0] else: fms_team = None district_team = None robot = None team = None if usfirst_team: team = TeamManipulator.updateMergeBase(usfirst_team, legacy_team) if fms_team: team = TeamManipulator.updateMergeBase(fms_team, team) if district_team: district_team = DistrictTeamManipulator.createOrUpdate( district_team) if robot: robot = RobotManipulator.createOrUpdate(robot) if team: team = TeamManipulator.createOrUpdate(team) success = True else: success = False logging.warning( "getTeamDetails failed for team: {}".format(key_name)) template_values = { 'key_name': key_name, 'team': team, 'success': success, 'district': district_team, 'robot': robot, } path = os.path.join( os.path.dirname(__file__), '../templates/datafeeds/usfirst_team_details_get.html') self.response.out.write(template.render(path, template_values))
def get(self, year, first_eid): df = DatafeedUsfirst() df_legacy = DatafeedUsfirstLegacy() event = df.getEventDetails(first_eid) if not event: logging.warning("getEventDetails with DatafeedUsfirst for event id {} failed. Retrying with DatafeedUsfirstLegacy.".format(first_eid)) event = df_legacy.getEventDetails(int(year), first_eid) if self.request.get('event_district_enum'): event.event_district_enum = int(self.request.get('event_district_enum')) event = EventManipulator.createOrUpdate(event) teams = df.getEventTeams(int(year), first_eid) if not teams: logging.warning("getEventTeams with DatafeedUsfirst for event id {} failed. Retrying with DatafeedUsfirstLegacy.".format(first_eid)) teams = df_legacy.getEventTeams(int(year), first_eid) if not teams: logging.warning("getEventTeams with DatafeedUsfirstLegacy for event id {} failed.".format(first_eid)) teams = [] teams = TeamManipulator.createOrUpdate(teams) if teams: if type(teams) is not list: teams = [teams] event_teams = [EventTeam( id=event.key.id() + "_" + team.key.id(), event=event.key, team=team.key, year=event.year) for team in teams] # Delete eventteams of teams that unregister from an event if event.future: existing_event_team_keys = set(EventTeam.query(EventTeam.event == event.key).fetch(1000, keys_only=True)) event_team_keys = set([et.key for et in event_teams]) et_keys_to_delete = existing_event_team_keys.difference(event_team_keys) EventTeamManipulator.delete_keys(et_keys_to_delete) event_teams = EventTeamManipulator.createOrUpdate(event_teams) if type(event_teams) is not list: event_teams = [event_teams] else: event_teams = [] template_values = { 'event': event, 'event_teams': event_teams, } path = os.path.join(os.path.dirname(__file__), '../templates/datafeeds/usfirst_event_details_get.html') self.response.out.write(template.render(path, template_values))
def setUp(self): self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_urlfetch_stub() self.testbed.init_datastore_v3_stub() self.testbed.init_memcache_stub() self.datafeed = DatafeedUsfirstLegacy() self.team177 = Team( id="frc177", team_number=177, first_tpid=211521, first_tpid_year=2014, ) self.team177.put()
def setUp(self): self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_urlfetch_stub() self.testbed.init_memcache_stub() self.datafeed = DatafeedUsfirstLegacy()