def post(self): self.sess = session.Session('enginesession') if self.sess.load(): user = UserDB().getUserByKey(self.sess.user) if self.request.get('nombre'): #!="" and SalasDB().getSalaByAutor(user.nick)=="": partyPass=None tipo=None puntos = 0 numPlayers = 0 #Creamos una nueva sala salas=SalasDB() nombre=self.request.get('nombre') autor=user.nick if self.request.get('password'): partyPass = self.request.get('password') if self.request.get('tipo') == "Puntos": tipo = "Puntos" puntos = int(self.request.get('puntos')) else: tipo="Rondas" tematica = self.request.get('tema') numPlayers = self.request.get('players') salas.AddSala(nombre, autor, tipo, puntos, partyPass, tematica, numPlayers) #Insertamos al usuario que creo la sala en esta miSala=SalasDB().getSalaByAutor(user.nick) user.idSala=miSala[0].idSala user.put() #Creamos el juego game = GameDB() miJuego = game.AddGame(user.idSala, user) #Metemos al usuario en el juego userGame = UsersInGameDB() userGame.AddUserInGame(user, miJuego) #Redireccionamos al usuario self.redirect("/salas?p=1") else: self.redirect("/salas?p=1") else: self.redirect("/salas?p=1")
def get(self): salas=SalasDB() messageRaw={} if self.request.get('b'): cadena= urllib2.unquote(self.request.get('b')) res=salas.ListarBusqueda(cadena) else: res=salas.ListarSalas() for r in res: messageRaw = { "idSala": r.idSala, "content": { "nombre": r.nombre, "autor": r.autor, "fechaCrea": str(r.fechaCrea.hour) + ":" + str(r.fechaCrea.minute), "players": r.players, "tipo": r.tipo, "password": r.password } } message = json.dumps(messageRaw) self.response.out.write(message)
def get(self): self.sess = session.Session('enginesession') if self.sess.load(): user = UserDB().getUserByKey(self.sess.user) if user.idSala!="None": numUsers = UserDB().getUsersBySala(user.idSala) res = numUsers.count() #Si no queda nadie en la sala la eliminamos if res == 1: SalasDB().deleteSala(user.idSala) GameDB().deleteGame(user.idSala) user2 = UserDB().getUserByNick(user.nick) UsersInGameDB().deleteUserInGame(user2) user.idSala="None" user.put() self.sess.store('', 0) self.redirect('/')
def post(self): game_key = self.request.get('g') if game_key: sala = SalasDB().getSalaById(game_key) if sala: user = None self.sess = session.Session('enginesession') if self.sess.load(): user = UserDB().getUserByKey(self.sess.user) users = UserDB() user_list = users.getUsersBySala(sala.idSala) messageRaw = { "type": "chat", "content": { "messaje": cgi.escape(self.request.get('d')), "user": user.nick } } message = json.dumps(messageRaw) for r in user_list: channel.send_message(str(r.key()), message);
def post(self): game_key = self.request.get('g') option = self.request.get('d') if game_key: game = Game.get(game_key) if option == "New": GameDB().nuevaPalabra(game) game = Game.get(game_key) else: GameDB().nuevaPalabra(game) game = Game.get(game_key) userAcertado = UserDB().getUserByNick(option) GameDB().cambiaDibujante(userAcertado.idSala, userAcertado) if game: user = None self.sess = session.Session('enginesession') if self.sess.load(): user = UserDB().getUserByKey(self.sess.user) UsersInGameDB().changeState(user) idSala = GameDB().getSalaByGame(game) if UsersInGameDB().usersPlaying( game) == UserDB().getNumUsersBySala(idSala): users_by_game = UsersInGame.all() users_by_game.filter("game =", game) results = users_by_game.fetch(30) #Comprobamos el tipo de juego fin = False empate = False miSala = SalasDB().getSalaById(idSala) if miSala.tipo == "Puntos": #Comprobamos si algun jugador ha llegado a la puntuacion for r in results: if r.ptos >= miSala.numPuntos: fin = True empate = True else: if miSala.tipo == "Rondas": na = 0 for r in results: if fin == False: if r.user.key() != game.dibujante.key(): messageRaw = { "type": "infoGame", "content": { "drawing": False, "word": len(game.palabra.palabra), "painter": str(game.dibujante.key()) } } else: messageRaw = { "type": "infoGame", "content": { "drawing": True, "word": game.palabra.palabra, "painter": str(game.dibujante.key()) } } else: if r.ptos >= miSala.numPuntos: if empate == False: win = r.user.nick + " ha ganado la partida" else: win = "Empate" messageRaw = { "type": "finPartida", "content": { "Winner": win } } message = json.dumps(messageRaw) channel.send_message(str(r.key()), message)
def get(self): self.sess = session.Session('enginesession') if self.sess.load(): template_values = {} users=UserDB() user = users.getUserByKey(self.sess.user) template_values['user'] = user #Si el usuario le da al boton de salir, eliminamos su asociacion con la sala if self.request.get('e', default_value='0')!='0': #Le decimos al resto de jugadores que se ha ido game_key = user.idSala if game_key: sala = SalasDB().getSalaById(game_key) if sala: user = None self.sess = session.Session('enginesession') if self.sess.load(): user = UserDB().getUserByKey(self.sess.user) users = UserDB() user_list = users.getUsersBySala(sala.idSala) if UserDB().userExistsInSala(sala.idSala, user.nick): messageRaw = { "type": "salaExit", "content": { "userKey": str(user.key()), "userNick": user.nick } } message = json.dumps(messageRaw) for r in user_list: channel.send_message(str(r.key()), message); #Eliminamos al usuario de la sala user2 = UserDB().getUserByNick(user.nick) UsersInGameDB().deleteUserInGame(user2) numUsers = UserDB().getUsersBySala(user.idSala) res = numUsers.count() #Si no queda nadie en la sala la eliminamos ademas del juego if res == 1: SalasDB().deleteSala(user.idSala) GameDB().deleteGame(user.idSala) #Asignamos none a la sala del usuario user.idSala="None" user.put() #Redirigimos al inicio self.redirect('/') #Comprobamos si la sala existe sala = SalasDB().getSalaById(self.request.get('id')) if sala: #Actualizamos la vista del resto de usuarios game_key = sala.idSala if game_key: sala = SalasDB().getSalaById(game_key) if sala: user = None self.sess = session.Session('enginesession') if self.sess.load(): user = UserDB().getUserByKey(self.sess.user) users = UserDB() user_list = users.getUsersBySala(sala.idSala) if not UserDB().userExistsInSala(sala.idSala, user.nick): if user.avatar: messageRaw = { "type": "sala", "content": { "userKey": str(user.key()), "userNick": user.nick, "userAvatar": 1 } } else: messageRaw = { "type": "sala", "content": { "userKey": str(user.key()), "userNick": user.nick, "userAvatar": 0 } } message = json.dumps(messageRaw) for r in user_list: channel.send_message(str(r.key()), message); #Si el usuario aun no esta asociado a las sala lo asociamos if user and user.idSala=="None" and UsersInGameDB().UserExist(user)==False: user.idSala=self.request.get('id') user.put() idSala = self.request.get('id') game = GameDB().getGameBySala(idSala) inGame = UsersInGameDB() inGame.AddUserInGame(user, game) #Guardamos la partida en la lista de partidas miSala = SalasDB().getSalaById(self.request.get('id')) misPuntos = UsersInGameDB().getPuntos(user) PartidasJugadasDB().setPartida(user, miSala.nombre, misPuntos, False) #Cambiamos el estado del usuario UsersInGameDB().changeState(user, "sala") #Obtenemos el id del juego asociado a la sala game = GameDB().getGameBySala(self.request.get('id')) template_values['gamekey']=game.key() #Ponemos la puntuacion parcial del usuario a 0 UsersInGameDB().scoreReset(user) #Listamos los usuarios en la sala user_list=users.getUsersBySala(self.request.get('id')) template_values['user_list']=user_list # Si el usuario identificado esta asignado al juego token = channel.create_channel(str(user.key())) template_values['token'] = token template_values['game_key'] = sala.idSala else: self.redirect('/') path = os.path.join(os.path.dirname(__file__), 'salajuego.html') self.response.out.write(template.render(path, template_values)) else: self.redirect("/salas?p=1")
def get(self): miPag = self.request.get('p', default_value='0') if miPag == '0': self.redirect("/salas?p=1") else: template_values = {} # Extraemos el usuario de la sesion self.sess = session.Session('enginesession') if self.sess.load(): user = UserDB().getUserByKey(self.sess.user) if user: template_values['user'] = user #Si el usuario ya estaba en una sala lo redirigimos a ella if user.idSala!="None": self.redirect("/salajuego?id="+str(user.idSala)) #Extraemos el numero de paginas que tiene el listado de salas numPags=0 if SalasDB().getNumSalas()/8==0: numPags=1 else: numPags=(SalasDB().getNumSalas()/8)+1 salas=SalasDB() if self.request.get('salaText') and self.request.get('param') != "Todas": parametro = self.request.get('param') parametro = parametro.lower() parametro = urllib2.unquote(parametro) textoBuscar = self.request.get('salaText') cadena= urllib2.unquote(textoBuscar) res=salas.ListarBusqueda(parametro, cadena) numPags=1 else: res=salas.ListarSalas() #Listamos las salas que hay por acada pagina res2 =[] i=0 if int(self.request.get('p')) <= numPags: for sala in res: if i>=(int(self.request.get('p'))-1)*8 and i<(int(self.request.get('p')))*8: res = UserDB().getUsersBySala(sala.idSala) sala.players = str(res.count()) res2.append(sala) sala.put() i+=1 else: self.redirect("/salas?p=1") #Listamos los temas de palabras listaT = [] listaTemas = Palabras.all() for tema in listaTemas: if tema.tema not in listaT: listaT.append(tema.tema) template_values['salas_list'] = res2 template_values['temas_list'] = listaT template_values['numSalas']=SalasDB().getNumSalas() template_values['pags']= numPags template_values['pag']=self.request.get('p') template_values['nextPage']=int(self.request.get('p'))+2 template_values['prevPage']=int(self.request.get('p'))-2 template_values['next']=int(self.request.get('p'))+1 template_values['prev']=int(self.request.get('p'))-1 path = os.path.join(os.path.dirname(__file__), 'salas.html') self.response.out.write(template.render(path, template_values))