Esempio n. 1
0
	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")
Esempio n. 2
0
	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)	
Esempio n. 3
0
	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('/')
Esempio n. 4
0
	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);
Esempio n. 5
0
    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)
Esempio n. 6
0
	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")
Esempio n. 7
0
	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))