Пример #1
0
 def get(self):
     newGame = Game()
     newGame.title = "test1"
     newGame.gameKey = "dsadfasfdsfaasd"
     newGame.put()
     
     profiles = [None, 'a123456', 'b123456', 'c123456', 'd123456'];
     
     myrandom = Random()
     
     for i in range(500):
         points = myrandom.randint(999, 99999)
         days_before = myrandom.randint(0, 40)
         tags = []
         profile = profiles[myrandom.randint(0, len(profiles) - 1)]
         name = profile
         if (name == None):
             name = "score-{0}".format(i)
         self.score(newGame, name, tags, points, datetime.datetime.today() - datetime.timedelta(days=days_before), profile)
     
     #        self.score(newGame, "lastmonth-12341", ["hard"], 10000, datetime.datetime.today() - datetime.timedelta(days=40))
     #        self.score(newGame, "lastweek-15341", ["hard"], 15000, datetime.datetime.today() - datetime.timedelta(days=8))
     #        self.score(newGame, "yesterday-17341", [], 5000, datetime.datetime.today() - datetime.timedelta(days=2), "123123145")
     #        self.score(newGame, "yesterday-17341", ["hard"], 7500, datetime.datetime.today() - datetime.timedelta(days=2), "123123145")
     #        self.score(newGame, "yesterday-17341", [], 6500, datetime.datetime.today() - datetime.timedelta(days=1), "123123145")
     #        self.score(newGame, "yesterday-17341", [], 5500, datetime.datetime.today() - datetime.timedelta(days=1), "123123145")
     #        self.score(newGame, "yesterday-17341", [], 4500, datetime.datetime.today() - datetime.timedelta(days=1), "123123145")
     #        self.score(newGame, "yesterday-17341", [], 2500, datetime.datetime.today() - datetime.timedelta(days=1), "123123145")
     #        self.score(newGame, "today-17341", ["hard"], 3500, datetime.datetime.today())
     
     self.response.headers['Content-Type'] = 'text/plain'        
     self.response.out.write("OK") 
Пример #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))
Пример #3
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))
Пример #4
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))
Пример #5
0
    def post(self):
        gameKey = cgi.escape(self.request.get('gameKey')).strip()
        title = cgi.escape(self.request.get('title')).strip()

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

        error = ''

        if (game):
            error = error + "ERROR: gameKey already used\n"

        if (gameKey == ''):
            error = error + "ERROR: gameKey cannot be empty\n"

        if (title == ''):
            error = error + "ERROR: title cannot be empty\n"

        if (error != ''):
            self.response.headers['Content-Type'] = 'text/plain'
            self.response.out.write(error)
            return

        game = Game()
        game.gameKey = gameKey
        game.title = title

        game.put()

        self.redirect('/')
Пример #6
0
    def get(self):
        newGame = Game()
        newGame.title = "test1"
        newGame.gameKey = "dsadfasfdsfaasd"
        newGame.put()

        profiles = [None, 'a123456', 'b123456', 'c123456', 'd123456']

        myrandom = Random()

        for i in range(500):
            points = myrandom.randint(999, 99999)
            days_before = myrandom.randint(0, 40)
            tags = []
            profile = profiles[myrandom.randint(0, len(profiles) - 1)]
            name = profile
            if (name == None):
                name = "score-{0}".format(i)
            self.score(
                newGame, name, tags, points,
                datetime.datetime.today() -
                datetime.timedelta(days=days_before), profile)

        #        self.score(newGame, "lastmonth-12341", ["hard"], 10000, datetime.datetime.today() - datetime.timedelta(days=40))
        #        self.score(newGame, "lastweek-15341", ["hard"], 15000, datetime.datetime.today() - datetime.timedelta(days=8))
        #        self.score(newGame, "yesterday-17341", [], 5000, datetime.datetime.today() - datetime.timedelta(days=2), "123123145")
        #        self.score(newGame, "yesterday-17341", ["hard"], 7500, datetime.datetime.today() - datetime.timedelta(days=2), "123123145")
        #        self.score(newGame, "yesterday-17341", [], 6500, datetime.datetime.today() - datetime.timedelta(days=1), "123123145")
        #        self.score(newGame, "yesterday-17341", [], 5500, datetime.datetime.today() - datetime.timedelta(days=1), "123123145")
        #        self.score(newGame, "yesterday-17341", [], 4500, datetime.datetime.today() - datetime.timedelta(days=1), "123123145")
        #        self.score(newGame, "yesterday-17341", [], 2500, datetime.datetime.today() - datetime.timedelta(days=1), "123123145")
        #        self.score(newGame, "today-17341", ["hard"], 3500, datetime.datetime.today())

        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write("OK")
Пример #7
0
    def post(self):
        gameKey = cgi.escape(self.request.get('gameKey')).strip()
        title = cgi.escape(self.request.get('title')).strip()
        
        game = Game.all().filter("gameKey =", gameKey ).get()

        error = ''
        
        if (game):
            error = error + "ERROR: gameKey already used\n"

        if (gameKey == ''):
            error = error + "ERROR: gameKey cannot be empty\n"

        if (title == ''):
            error = error + "ERROR: title cannot be empty\n"
        
        if (error != ''): 
            self.response.headers['Content-Type'] = 'text/plain'        
            self.response.out.write(error)    
            return
        
        game = Game()
        game.gameKey = gameKey
        game.title = title
        
        game.put()

        self.redirect('/')
Пример #8
0
    def get(self):
        games = list()
        
        for game in Game.all():
            games.append(game)
      
        isAdmin = users.is_current_user_admin()
      
        template_values = {'games':games, 'admin':isAdmin, 
                           'user':users.get_current_user(), 
                           'signInUrl':users.create_login_url('/'),
                           'signOutUrl':users.create_logout_url('/')}

        path = os.path.join(os.path.dirname(__file__), 'gameList.html')
        self.response.headers['Content-Type'] = 'text/html'
        self.response.out.write(template.render(path, template_values))
 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')
Пример #10
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))
Пример #11
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())
    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')
Пример #13
0
    def get(self):
        games = list()

        for game in Game.all():
            games.append(game)

        isAdmin = users.is_current_user_admin()

        template_values = {
            'games': games,
            'admin': isAdmin,
            'user': users.get_current_user(),
            'signInUrl': users.create_login_url('/'),
            'signOutUrl': users.create_logout_url('/')
        }

        path = os.path.join(os.path.dirname(__file__), 'gameList.html')
        self.response.headers['Content-Type'] = 'text/html'
        self.response.out.write(template.render(path, template_values))
Пример #14
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())