def get(self):
        year, month, week, day = dateutils.get_datetime_data(datetime.datetime.now())
        
        gameKey = cgi.escape(self.request.get('gameKey'))
        range = self.request.get('range')
        
        game = Game.all().filter("gameKey =", gameKey ).get()
        
        tags = self.request.get_all('tag')        
        limit = self.request.get_range('limit', 1000)
        
        distinct  = self.request.get('distinct', "true")
        distinct = False if distinct == "false" else True 
        
        # scores = game.scores
        
        rangeNumber  = self.request.get_range('rangeNumber')
        
        scores = scoreDao.get_scores(game, range, tags, "-points", limit, year, month, week, day, rangeNumber, distinct)
        
        template_values = {'game':game, 'scores':scores}

        path = os.path.join(os.path.dirname(__file__), 'game.html')
        self.response.headers['Content-Type'] = 'text/html'
        self.response.out.write(template.render(path, template_values))
Exemple #2
0
    def get(self):
        year, month, week, day = dateutils.get_datetime_data(
            datetime.datetime.now())

        gameKey = cgi.escape(self.request.get('gameKey'))
        range = self.request.get('range')

        game = Game.all().filter("gameKey =", gameKey).get()

        tags = self.request.get_all('tag')
        limit = self.request.get_range('limit', 1000)

        distinct = self.request.get('distinct', "true")
        distinct = False if distinct == "false" else True

        # scores = game.scores

        rangeNumber = self.request.get_range('rangeNumber')

        scores = scoreDao.get_scores(game, range, tags, "-points", limit, year,
                                     month, week, day, rangeNumber, distinct)

        template_values = {'game': game, 'scores': scores}

        path = os.path.join(os.path.dirname(__file__), 'game.html')
        self.response.headers['Content-Type'] = 'text/html'
        self.response.out.write(template.render(path, template_values))
Exemple #3
0
    def get(self):
        gameKey = cgi.escape(self.request.get('gameKey'))
        game = Game.all().filter("gameKey =", gameKey).get()
        
        if(not game):
            self.response.set_status(500, message="Can't find game with key " + gameKey)
            return
        
        range = self.request.get('range')
        tags = self.request.get_all('tag')        
        limit = self.request.get_range('limit')
        ascending = self.request.get('ascending')
        
        distinct  = self.request.get('distinct', "true")
        distinct = False if distinct == "false" else True 
                
        if(ascending == "true"):
            order = "points"
        else:
            order = "-points"
        
        rangeNumber  = self.request.get_range('rangeNumber')
         
        year, month, week, day = dateutils.get_datetime_data(datetime.datetime.now())
        scores = scoreDao.get_scores(game, range, tags, order, limit, year, month, week, day, rangeNumber, distinct)

        self.response.headers['Content-Type'] = 'text/plain'
        scoreList = []
        for score in scores:
            data = json.loads(score.data)
            scoreData = {'id': str(score.key()), 'profilePublicKey': score.profilePublicKey, 'name': score.name, 'tags':score.tags, 'points':score.points, 'timestamp':long(time.mktime(score.timestamp.timetuple())*1000), 'data':data}
            scoreList.append(scoreData)
        
        self.response.out.write(json.dumps(scoreList))
    def get(self):

        scores = Score.all()
        
        for score in scores:
            score.year, score.month, score.week, score.day = dateutils.get_datetime_data(score.timestamp)
            score.put()
      
        self.response.headers['Content-Type'] = 'text/html'
        self.response.out.write("OK")   
Exemple #5
0
    def get(self):

        scores = Score.all()

        for score in scores:
            score.year, score.month, score.week, score.day = dateutils.get_datetime_data(
                score.timestamp)
            score.put()

        self.response.headers['Content-Type'] = 'text/html'
        self.response.out.write("OK")
 def score(self, game, name, tags, points, datetime, profilePublicKey = None):
     score = Score()
     score.game = game
     score.name = name
     if (profilePublicKey <> None):
         score.profilePublicKey = profilePublicKey
     score.points = points
     score.tags = tags
     score.data = "{}"
     score.timestamp = datetime
     score.year, score.month, score.week, score.day = dateutils.get_datetime_data(score.timestamp)
     score.put()
     return score
Exemple #7
0
 def score(self, game, name, tags, points, datetime, profilePublicKey=None):
     score = Score()
     score.game = game
     score.name = name
     if (profilePublicKey <> None):
         score.profilePublicKey = profilePublicKey
     score.points = points
     score.tags = tags
     score.data = "{}"
     score.timestamp = datetime
     score.year, score.month, score.week, score.day = dateutils.get_datetime_data(
         score.timestamp)
     score.put()
     return score
 def post(self): # should run at most 1/s
     
     gameKey = cgi.escape(self.request.get('gameKey'))
     game = Game.all().filter("gameKey =", gameKey).get()
     
     if(not game):
         self.response.set_status(500, message="Can't find game with key " + gameKey)
         return
     
     year, month, week, today = dateutils.get_datetime_data(datetime.datetime.now())
     
     tags = self.request.get_all('tag')
     day  = self.request.get_range('day')              
     limit = 1000
         
     scoresQuery = game.scores
         
     scoresQuery.filter("year =", year)
     scoresQuery.filter("day =", day)
         
     for tag in tags:
         scoresQuery.filter("tags =", tag)
     
     order = "-points"
         
     scoresQuery = scoresQuery.order(order)
     
     scores_distinct_names = []
     scores_unique = []
     
     offset = 0;
     scores = scoresQuery.fetch(limit, offset)
     
     while (len(scores) > 0):
         for score in scores:
             unique_id = score.profilePublicKey if (score.profilePublicKey != None) else score.name
             if unique_id not in scores_distinct_names:
                 scores_unique.append(score)
                 scores_distinct_names.append(unique_id)
             else:
                 score.delete()
         offset += limit
         scores = scoresQuery.fetch(limit, offset)
         
     
     self.response.headers['Content-Type'] = 'text/plain'
     self.response.out.write('OK')
    def get(self):
        gameKey = cgi.escape(self.request.get('gameKey'))
        game = Game.all().filter("gameKey =", gameKey).get()

        if (not game):
            self.response.set_status(500,
                                     message="Can't find game with key " +
                                     gameKey)
            return

        range = self.request.get('range')
        tags = self.request.get_all('tag')
        limit = self.request.get_range('limit')
        ascending = self.request.get('ascending')

        distinct = self.request.get('distinct', "true")
        distinct = False if distinct == "false" else True

        if (ascending == "true"):
            order = "points"
        else:
            order = "-points"

        rangeNumber = self.request.get_range('rangeNumber')

        year, month, week, day = dateutils.get_datetime_data(
            datetime.datetime.now())
        scores = scoreDao.get_scores(game, range, tags, order, limit, year,
                                     month, week, day, rangeNumber, distinct)

        self.response.headers['Content-Type'] = 'text/plain'
        scoreList = []
        for score in scores:
            data = json.loads(score.data)
            scoreData = {
                'id': str(score.key()),
                'profilePublicKey': score.profilePublicKey,
                'name': score.name,
                'tags': score.tags,
                'points': score.points,
                'timestamp':
                long(time.mktime(score.timestamp.timetuple()) * 1000),
                'data': data
            }
            scoreList.append(scoreData)

        self.response.out.write(json.dumps(scoreList))
    def post(self):
        gameKey = cgi.escape(self.request.get('gameKey'))
        game = Game.all().filter("gameKey =", gameKey).get()

        if (not game):
            self.response.set_status(500,
                                     message="Can't find game with key " +
                                     gameKey)
            return

        currentTime = datetime.datetime.now()

        score = Score()
        score.name = cgi.escape(self.request.get('name'))
        score.tags = self.request.get_all('tag')
        score.points = self.request.get_range('points')
        score.data = cgi.escape(self.request.get('data', '{}'))
        score.profilePublicKey = self.request.get('profilePublicKey', None)

        profilePrivateKey = self.request.get('profilePrivateKey', None)

        if (profilePrivateKey <> None):
            profilePrivateKey = cgi.escape(profilePrivateKey)
            profile = Profile.all().filter("privateKey =",
                                           profilePrivateKey).get()

            if (profile <> None):
                score.profilePublicKey = profile.publicKey
                score.name = profile.name
                # update profile last access time
                profile.lastAccess = currentTime
                profile.put()
            else:
                self.response.set_status(
                    500, message="Can't find profile to submit score")
                return

        score.year, score.month, score.week, score.day = dateutils.get_datetime_data(
            currentTime)

        score.game = game
        score.put()

        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write(score.key())
    def post(self):
        
        gameKey = cgi.escape(self.request.get('gameKey'))
        game = Game.all().filter("gameKey =", gameKey).get()
        
        if(not game):
            self.response.set_status(500, message="Can't find game with key " + gameKey)
            return
        
        tags = self.request.get_all('tag')        
        
        year, month, week, today = dateutils.get_datetime_data(datetime.datetime.now())

        for day in range(today + 1):
            taskqueue.add(url='/removeScoresForDay', params={'gameKey': self.request.get('gameKey'), 'tag': tags, 'day' : day})
            
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('OK - Tasks to remove scores for each day enqueued')
Exemple #12
0
    def post(self):
        gameKey = cgi.escape(self.request.get('gameKey'))
        game = Game.all().filter("gameKey =", gameKey ).get()
        
        if(not game):
            self.response.set_status(500,message="Can't find game with key " + gameKey)
            return
        
        currentTime = datetime.datetime.now()
        
        score = Score()
        score.name = cgi.escape(self.request.get('name'))
        score.tags = self.request.get_all('tag')
        score.points = self.request.get_range('points')
        score.data = cgi.escape(self.request.get('data', '{}'))
        score.profilePublicKey = self.request.get('profilePublicKey', None)
        
        profilePrivateKey = self.request.get('profilePrivateKey', None)
        
        if (profilePrivateKey <> None):
            profilePrivateKey = cgi.escape(profilePrivateKey)
            profile = Profile.all().filter("privateKey =", profilePrivateKey).get()

            if (profile <> None):
                score.profilePublicKey = profile.publicKey
                score.name = profile.name
                # update profile last access time
                profile.lastAccess = currentTime
                profile.put()
            else:
                self.response.set_status(500,message="Can't find profile to submit score")
                return
            
        score.year, score.month, score.week, score.day = dateutils.get_datetime_data(currentTime)
            
        score.game = game
        score.put()
        
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write(score.key())