def test_match_updated(self): affected_refs = { 'key': {ndb.Key(Match, '2015casj_qm1'), ndb.Key(Match, '2015casj_qm2')}, 'event': {ndb.Key(Event, '2015casj'), ndb.Key(Event, '2015cama')}, 'team_keys': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, 'year': {2014, 2015}, } cache_keys = [ q.cache_key for q in get_affected_queries.match_updated(affected_refs) ] self.assertEqual(len(cache_keys), 16) self.assertTrue(MatchQuery('2015casj_qm1').cache_key in cache_keys) self.assertTrue(MatchQuery('2015casj_qm2').cache_key in cache_keys) self.assertTrue( MatchGdcvDataQuery('2015casj_qm1').cache_key in cache_keys) self.assertTrue( MatchGdcvDataQuery('2015casj_qm2').cache_key in cache_keys) self.assertTrue(EventMatchesQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventMatchesQuery('2015cama').cache_key in cache_keys) self.assertTrue( EventMatchesGdcvDataQuery('2015casj').cache_key in cache_keys) self.assertTrue( EventMatchesGdcvDataQuery('2015cama').cache_key in cache_keys) self.assertTrue( TeamEventMatchesQuery('frc254', '2015casj').cache_key in cache_keys) self.assertTrue( TeamEventMatchesQuery('frc254', '2015cama').cache_key in cache_keys) self.assertTrue( TeamEventMatchesQuery('frc604', '2015casj').cache_key in cache_keys) self.assertTrue( TeamEventMatchesQuery('frc604', '2015cama').cache_key in cache_keys) self.assertTrue( TeamYearMatchesQuery('frc254', 2014).cache_key in cache_keys) self.assertTrue( TeamYearMatchesQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue( TeamYearMatchesQuery('frc604', 2014).cache_key in cache_keys) self.assertTrue( TeamYearMatchesQuery('frc604', 2015).cache_key in cache_keys)
def _render(self, match_key, model_type=None): match, self._last_modified = MatchQuery(match_key).fetch( dict_version=3, return_updated=True) if model_type is not None: match = filter_match_properties([match], model_type)[0] return json.dumps(match, ensure_ascii=True, indent=2, sort_keys=True)
def _render(self, match_key): match = MatchQuery(match_key).fetch() if not match: self.abort(404) if not match.has_been_played: # If FIRST hasn't published data yet, don't return anything return json.dumps([]) match_key = match.key_name gdcv_data = MatchGdcvDataQuery(match_key).fetch() return json.dumps(gdcv_data, ensure_ascii=True, indent=2, sort_keys=True)
def match_updated(affected_refs): match_keys = _filter(affected_refs['key']) event_keys = _filter(affected_refs['event']) team_keys = _filter(affected_refs['team_keys']) years = _filter(affected_refs['year']) queries_and_keys = [] for match_key in match_keys: queries_and_keys.append((MatchQuery(match_key.id()))) for event_key in event_keys: queries_and_keys.append((EventMatchesQuery(event_key.id()))) for team_key in team_keys: queries_and_keys.append((TeamEventMatchesQuery(team_key.id(), event_key.id()))) for team_key in team_keys: for year in years: queries_and_keys.append((TeamYearMatchesQuery(team_key.id(), year))) return queries_and_keys