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 }))
Beispiel #2
0
  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') }))
Beispiel #4
0
  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 }))
Beispiel #7
0
  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)
Beispiel #10
0
    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")
Beispiel #11
0
 def renderPage(self, lotID, message):
   
   container = lot.getLot(lotID)
   self.response.write(get_template('test.html').render({ 'container': container, 'renderedlot':  container.render(), 'message': message }))
Beispiel #12
0
 def get(self, lotID):
     container = lot.getLot(lotID)
     self.response.write(get_template('viewallplayers.html').render({'container': container, 'playersrendered': container.render('renderallplayers.html') }))
Beispiel #13
0
    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}))
Beispiel #14
0
 def get(self, lotID):
   container = lot.getLot(lotID)
   self.response.write(get_template('viewlot.html').render({'container': container, 'lotrendered': container.render() }))