def get(self, lotID): if 'authenticatedtoken' not in self.session: return self.redirect('http://' + wlnet + "/CLOT/Auth?p=856960317&state=join/" + str(long(lotID))) container = lot.getLot(lotID) inviteToken = self.session['authenticatedtoken'] #Call the warlight API to get the name, color, and verify that the invite token is correct apiret = hitapi('/API/ValidateInviteToken', { 'Token': inviteToken }) if not "tokenIsValid" in apiret: return self.response.write('The supplied invite token is invalid. Please contact the CLOT author for assistance.') #Check if this invite token is new to us player = Player.query(Player.inviteToken == inviteToken).get() if player is None: data = json.loads(apiret) player = Player(inviteToken=inviteToken, name=data['name'], color=data['color']) player.put() logging.info("Created player " + unicode(player)) #Set them as participating in the current lot addIfNotPresent(container.lot.playersParticipating, player.key.id()) container.players[player.key.id()] = player container.lot.put() container.changed() logging.info("Player " + unicode(player) + " joined " + unicode(container.lot)) self.response.write(get_template('join.html').render({ 'container': container }))
def get(self): for lotInst in lot.LOT.query(): if not lotInst.hasEnded(): execute(self.request, lot.getLot(lotInst.key)) self.response.write("Cron complete")
def get(self, lotID): currentPlayer = None if 'authenticatedtoken' in self.session: inviteToken = self.session['authenticatedtoken'] currentPlayer = Player.query(Player.inviteToken == inviteToken).get() container = lot.getLot(lotID) self.response.write(get_template('viewlot.html').render({'container': container, 'currentPlayer': currentPlayer, 'lotrendered': container.render('renderlot.html') }))
def get(self, lotID): container = lot.getLot(lotID) container.lot.dateEnded = datetime.datetime.now() container.lot.playersParticipating = [] container.lot.put() container.changed() logging.info('LOT ended') self.redirect('/')
def get(self, playerID, lotID): playerID = long(playerID) p = Player.get_by_id(playerID) games = Game.query(Game.players == playerID) container = lot.getLot(lotID) currentPlayer = None if 'authenticatedtoken' in self.session: inviteToken = self.session['authenticatedtoken'] currentPlayer = Player.query(Player.inviteToken == inviteToken).get() self.response.write(get_template('viewplayer.html').render({'player': p, 'games': games, 'currentPlayer': currentPlayer, 'container':container}))
def get(self, lotID): if 'authenticatedtoken' not in self.session: ############################################### SET TO main before going live ################################## # main - 5015900432 # test - 314032996 return self.redirect('http://' + wlnet + "/CLOT/Auth?p=3022124041&state=join/" + str(long(lotID))) container = lot.getLot(lotID) inviteToken = self.session['authenticatedtoken'] templates = [655094] templateIDs = ','.join(str(template) for template in templates) logging.info("current templates in use : " + templateIDs) #Call the warlight API to get the name, color, and verify that the invite token is correct tempapiret = hitapi('/API/ValidateInviteToken', { 'Token': inviteToken, 'TemplateIDs': templateIDs}) logging.info('tempapi return value' + str(tempapiret)) logging.info("invite token = " + inviteToken) if (not "tokenIsValid" in tempapiret) or ("CannotUseTemplate" in tempapiret): return self.response.write('The supplied invite token is invalid. Please contact the CLOT author for assistance.') #Check if this invite token is new to us player = Player.query(Player.inviteToken == inviteToken).get() data = json.loads(tempapiret) currentColor = data['color'] currentName = data['name'] if player is None: player = Player(inviteToken=inviteToken, name=currentName, color=currentColor, customProperties = {}, numberOfGamesAtOnce=5) player.put() logging.info("Created player " + unicode(player)) else: # Update player details if currentColor != player.color: player.color = currentColor if currentName != player.name: player.name = currentName player.put() logging.info("Update player metadata for " + unicode(player)) #Set them as participating in the current lot addIfNotPresent(container.lot.playersParticipating, player.key.id()) container.players[player.key.id()] = player container.lot.put() container.changed() logging.info("Player " + unicode(player) + " joined " + unicode(container.lot)) self.response.write(get_template('join.html').render({ 'container': container }))
def post(self, lotID): if not TestMode: return self.response.write("api.TestMode is not enabled. This page should only be used while testing.") container = lot.getLot(lotID) if 'ClearData' in self.request.POST: #User clicked Clear Data, delete all games and players ndb.delete_multi([o.key for o in Game.query(Game.lotID == container.lot.key.id())]) container.lot.playersParticipating = [] container.lot.playerRanks = [] container.lot.put() container.changed() memcache.flush_all() TestPage.renderPage(self, lotID, 'Deleted all games and players') elif 'RunCron' in self.request.POST: #Just execute the same thing that we'd do if we hit /cron, but also time it start = datetime.now() cron.execute(self.request, container) TestPage.renderPage(self, lotID, 'Cron finished in ' + unicode(datetime.now() - start)) elif 'AddPlayers' in self.request.POST: #Add some dummy player data. It won't work on warlight.net of course, but if TestMode is enabled it won't ever be passed there. Just be sure and delete it before disabling TestMode. numPlayers = long(self.request.POST["NumPlayers"]) for z in range(numPlayers): name = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(5)) p = Player(name=name, inviteToken=name, color="#0000FF") p.put() container.lot.playersParticipating.append(p.key.id()) container.lot.put() container.changed() TestPage.renderPage(self, lotID, 'Added ' + str(numPlayers) + ' fake players') elif 'FlushCache' in self.request.POST: if memcache.flush_all(): TestPage.renderPage(self, lotID, 'Deleted everything from cache') else: TestPage.renderPage(self, lotID, 'Error while trying to flush cache') elif 'Test' in self.request.POST: #Just a blank space for testing random stuff TestPage.renderPage(self, lotID, 'Ran test code') else: self.response.write("No handler")
def get(self, lotID): if 'authenticatedtoken' not in self.session: return self.redirect('http://' + wlnet + "/CLOT/Auth?p=3022124041&state=leave/" + str(long(lotID))) container = lot.getLot(lotID) inviteToken = self.session['authenticatedtoken'] #Find the player by their token player = Player.query(Player.inviteToken == inviteToken).get() if not player: return self.response.write("Invite token is invalid. Please contact the CLOT author for assistance.") #When they leave, remove them from this lot if player.key.id() in container.lot.playersParticipating: container.lot.playersParticipating.remove(player.key.id()) container.lot.put() container.changed() logging.info("Player left LOT " + unicode(player)) self.response.write(get_template('leave.html').render({ 'container': container }))
def get(self, playerID, lotID, numberOfGames): playerID = long(playerID) if 'authenticatedtoken' not in self.session: return self.redirect('/') inviteToken = self.session['authenticatedtoken'] player = Player.query(Player.inviteToken == inviteToken).get() if player.key.id() != playerID : ''' Not the logged in user''' return self.redirect('/lot/'+ lotID) container = lot.getLot(lotID) if numberOfGames != None: player.numberOfGamesAtOnce = int(numberOfGames) player.put() container.players[player.key.id()] = player container.changed() self.redirect('/player/playerId=' + str(playerID) + '&&lotId=' + lotID)
def post(self, lotID): if not TestMode: return self.response.write( "api.TestMode is not enabled. This page should only be used while testing." ) container = lot.getLot(lotID) if 'ClearData' in self.request.POST: #User clicked Clear Data, delete all games and players ndb.delete_multi([ o.key for o in Game.query(Game.lotID == container.lot.key.id()) ]) container.lot.playersParticipating = [] container.lot.playerRanks = [] container.lot.put() container.changed() memcache.flush_all() TestPage.renderPage(self, lotID, 'Deleted all games and players') elif 'RunCron' in self.request.POST: #Just execute the same thing that we'd do if we hit /cron, but also time it start = datetime.now() cron.execute(self.request, container) TestPage.renderPage( self, lotID, 'Cron finished in ' + unicode(datetime.now() - start)) elif 'AddPlayers' in self.request.POST: #Add some dummy player data. It won't work on warlight.net of course, but if TestMode is enabled it won't ever be passed there. Just be sure and delete it before disabling TestMode. numPlayers = long(self.request.POST["NumPlayers"]) for z in range(numPlayers): name = ''.join( random.choice(string.ascii_uppercase + string.digits) for x in range(5)) p = Player(name=name, inviteToken=name, color="#0000FF") p.put() container.lot.playersParticipating.append(p.key.id()) container.lot.put() container.changed() TestPage.renderPage(self, lotID, 'Added ' + str(numPlayers) + ' fake players') elif 'FlushCache' in self.request.POST: if memcache.flush_all(): TestPage.renderPage(self, lotID, 'Deleted everything from cache') else: TestPage.renderPage(self, lotID, 'Error while trying to flush cache') elif 'Test' in self.request.POST: #Just a blank space for testing random stuff TestPage.renderPage(self, lotID, 'Ran test code') else: self.response.write("No handler")
def renderPage(self, lotID, message): container = lot.getLot(lotID) self.response.write(get_template('test.html').render({ 'container': container, 'renderedlot': container.render(), 'message': message }))
def get(self, lotID): container = lot.getLot(lotID) self.response.write(get_template('viewallplayers.html').render({'container': container, 'playersrendered': container.render('renderallplayers.html') }))
def get(self, lotID): if 'authenticatedtoken' not in self.session: ############################################### SET TO main before going live ################################## # main - 5015900432 # test - 314032996 return self.redirect('http://' + wlnet + "/CLOT/Auth?p=314032996&state=join/" + str(long(lotID))) container = lot.getLot(lotID) inviteToken = self.session['authenticatedtoken'] templates = [620619] templateIDs = ','.join(str(template) for template in templates) logging.info("current templates in use : " + templateIDs) #Call the warlight API to get the name, color, and verify that the invite token is correct tempapiret = hitapi('/API/ValidateInviteToken', { 'Token': inviteToken, 'TemplateIDs': templateIDs }) logging.info('tempapi return value' + str(tempapiret)) logging.info("invite token = " + inviteToken) if (not "tokenIsValid" in tempapiret) or ("CannotUseTemplate" in tempapiret): return self.response.write( 'The supplied invite token is invalid. Please contact the CLOT author for assistance.' ) #Check if this invite token is new to us player = Player.query(Player.inviteToken == inviteToken).get() data = json.loads(tempapiret) currentColor = data['color'] currentName = data['name'] if player is None: player = Player(inviteToken=inviteToken, name=currentName, color=currentColor, customProperties={}, numberOfGamesAtOnce=5) player.put() logging.info("Created player " + unicode(player)) else: # Update player details if currentColor != player.color: player.color = currentColor if currentName != player.name: player.name = currentName player.put() logging.info("Update player metadata for " + unicode(player)) #Set them as participating in the current lot addIfNotPresent(container.lot.playersParticipating, player.key.id()) container.players[player.key.id()] = player container.lot.put() container.changed() logging.info("Player " + unicode(player) + " joined " + unicode(container.lot)) self.response.write( get_template('join.html').render({'container': container}))
def get(self, lotID): container = lot.getLot(lotID) self.response.write(get_template('viewlot.html').render({'container': container, 'lotrendered': container.render() }))