Example #1
0
    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,
        }
Example #2
0
 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,
     }
Example #3
0
    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,
        }
Example #4
0
 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}
Example #5
0
    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)
Example #6
0
 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,
     }
Example #7
0
    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)
Example #8
0
    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)
Example #9
0
    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)
Example #10
0
    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,
        }