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")
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))
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))
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')).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('/')
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")
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('/')
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')
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')
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): 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())