def leaders_weekly_view(self): redis_client = self.request.registry.redis_client cache_key = redis_client.cache_keys['leaders_weekly'] cached = redis_client.get(cache_key) if cached: data = internal_loads(cached) else: session = self.request.db_ro_session data = { 'new_cell': {'leaders1': [], 'leaders2': []}, 'new_wifi': {'leaders1': [], 'leaders2': []}, } for name, value in leaders_weekly(session).items(): value = [ { 'pos': l[0] + 1, 'num': l[1]['num'], 'nickname': l[1]['nickname'], } for l in list(enumerate(value))] half = len(value) // 2 + len(value) % 2 data[name] = { 'leaders1': value[:half], 'leaders2': value[half:], } redis_client.set(cache_key, internal_dumps(data), ex=3600) return { 'page_title': 'Weekly Leaderboard', 'scores': data, }
def leaders_weekly_view(self): session = self.request.db_slave_session result = { 'new_cell': { 'leaders1': [], 'leaders2': [] }, 'new_wifi': { 'leaders1': [], 'leaders2': [] }, } for name, value in leaders_weekly(session).items(): value = [{ 'pos': l[0] + 1, 'num': l[1]['num'], 'nickname': l[1]['nickname'], } for l in list(enumerate(value))] half = len(value) // 2 + len(value) % 2 result[name] = { 'leaders1': value[:half], 'leaders2': value[half:], } return { 'page_title': 'Weekly Leaderboard', 'scores': result, }
def leaders_weekly_view(self): session = self.request.db_slave_session result = {"new_cell": {"leaders1": [], "leaders2": []}, "new_wifi": {"leaders1": [], "leaders2": []}} for name, value in leaders_weekly(session).items(): value = [ {"pos": l[0] + 1, "num": l[1]["num"], "nickname": l[1]["nickname"]} for l in list(enumerate(value)) ] half = len(value) // 2 + len(value) % 2 result[name] = {"leaders1": value[:half], "leaders2": value[half:]} return {"page_title": "Weekly Leaderboard", "scores": result}
def test_leaders_weekly(self): session = self.db_master_session today = util.utcnow().date() test_data = [] for i in range(1, 11): test_data.append((u'nick-%s' % i, i)) for nick, value in test_data: user = User(nickname=nick) session.add(user) session.flush() score = Score(key=ScoreKey.new_cell, userid=user.id, time=today, value=value) session.add(score) score = Score(key=ScoreKey.new_wifi, userid=user.id, time=today, value=21 - value) session.add(score) session.commit() # check the result result = leaders_weekly(session, batch=5) self.assertEqual(len(result), 2) self.assertEqual(set(result.keys()), set(['new_cell', 'new_wifi'])) # check the cell scores scores = result['new_cell'] self.assertEqual(len(scores), 5) self.assertEqual(scores[0]['nickname'], 'nick-10') self.assertEqual(scores[0]['num'], 10) self.assertEqual(scores[-1]['nickname'], 'nick-6') self.assertEqual(scores[-1]['num'], 6) # check the wifi scores scores = result['new_wifi'] self.assertEqual(len(scores), 5) self.assertEqual(scores[0]['nickname'], 'nick-1') self.assertEqual(scores[0]['num'], 20) self.assertEqual(scores[-1]['nickname'], 'nick-5') self.assertEqual(scores[-1]['num'], 16)
def leaders_weekly_view(self): session = self.request.db_slave_session result = { 'new_cell': {'leaders1': [], 'leaders2': []}, 'new_wifi': {'leaders1': [], 'leaders2': []}, } for name, value in leaders_weekly(session).items(): value = [ { 'pos': l[0] + 1, 'num': l[1]['num'], 'nickname': l[1]['nickname'], } for l in list(enumerate(value))] half = len(value) // 2 + len(value) % 2 result[name] = { 'leaders1': value[:half], 'leaders2': value[half:], } return { 'page_title': 'Weekly Leaderboard', 'scores': result, }
def test_leaders_weekly(self): session = self.session today = util.utcnow().date() test_data = [] for i in range(1, 11): test_data.append((u'nick-%s' % i, i)) for nick, value in test_data: user = User(nickname=nick) session.add(user) session.flush() score = Score(key=ScoreKey.new_cell, userid=user.id, time=today, value=value) session.add(score) score = Score(key=ScoreKey.new_wifi, userid=user.id, time=today, value=21 - value) session.add(score) session.commit() # check the result result = leaders_weekly(session, batch=5) self.assertEqual(len(result), 2) self.assertEqual(set(result.keys()), set(['new_cell', 'new_wifi'])) # check the cell scores scores = result['new_cell'] self.assertEqual(len(scores), 5) self.assertEqual(scores[0]['nickname'], 'nick-10') self.assertEqual(scores[0]['num'], 10) self.assertEqual(scores[-1]['nickname'], 'nick-6') self.assertEqual(scores[-1]['num'], 6) # check the wifi scores scores = result['new_wifi'] self.assertEqual(len(scores), 5) self.assertEqual(scores[0]['nickname'], 'nick-1') self.assertEqual(scores[0]['num'], 20) self.assertEqual(scores[-1]['nickname'], 'nick-5') self.assertEqual(scores[-1]['num'], 16)
def test_leaders_weekly(self): from ichnaea.content.stats import leaders_weekly session = self.db_master_session test_data = [] for i in range(1, 11): test_data.append((u'nick-%s' % i, i)) for nick, value in test_data: user = User(nickname=nick) session.add(user) session.flush() score = Score(userid=user.id, value=value) score.name = 'new_cell' session.add(score) score = Score(userid=user.id, value=21 - value) score.name = 'new_wifi' session.add(score) session.commit() # check the result result = leaders_weekly(session, batch=5) self.assertEqual(len(result), 2) self.assertEqual(set(result.keys()), set(['new_cell', 'new_wifi'])) # check the cell scores scores = result['new_cell'] self.assertEqual(len(scores), 5) self.assertEqual(scores[0]['nickname'], 'nick-10') self.assertEqual(scores[0]['num'], 10) self.assertEqual(scores[-1]['nickname'], 'nick-6') self.assertEqual(scores[-1]['num'], 6) # check the wifi scores scores = result['new_wifi'] self.assertEqual(len(scores), 5) self.assertEqual(scores[0]['nickname'], 'nick-1') self.assertEqual(scores[0]['num'], 20) self.assertEqual(scores[-1]['nickname'], 'nick-5') self.assertEqual(scores[-1]['num'], 16)
def leaders_weekly_view(self): data = self._get_cache('leaders_weekly') if data is None: data = { 'new_cell': {'leaders1': [], 'leaders2': []}, 'new_wifi': {'leaders1': [], 'leaders2': []}, } for name, value in leaders_weekly(self.session).items(): value = [{ 'pos': l[0] + 1, 'num': l[1]['num'], 'nickname': l[1]['nickname'], } for l in enumerate(value)] half = len(value) // 2 + len(value) % 2 data[name] = { 'leaders1': value[:half], 'leaders2': value[half:], } self._set_cache('leaders_weekly', data) return { 'page_title': 'Weekly Leaderboard', 'scores': data, }