def play(request): obj = None user_id = None if request.POST: if "user_id" in request.COOKIES: user_id = request.COOKIES["user_id"] user = User.objects.get(id=user_id) else: user = User() user.save() if "image-data" in request.POST: obj = Drawing() obj.image = request.POST["image-data"] elif "caption" in request.POST: obj = Caption() obj.content = request.POST["caption"] if "previous-id" in request.POST: obj.previous_id = request.POST["previous-id"] obj.user = user obj.save() is_drawing = obj.__class__ == Caption response = render(request, 'index.html', { 'drawing': is_drawing, 'obj': obj }) if user_id is None and request.POST: response.set_cookie("user_id", user.id) return response
def sinalogin(request): """a method for sina login""" #use the access_token to get uid from sina server #TODO:this appkey should be written in the conf file appkey = "2600055104" access_token = request.POST['access_token'] payload = {'source': appkey, 'access_token': access_token} r = requests.get('https://api.weibo.com/2/account/get_uid.json', params = payload) response = r.json() if ("uid" in response): uid = str(response['uid']) else: result = __resultToJson('1', '', {}) return HttpResponse(result, content_type = 'application/json') #get the userinfo according to the access_token and uid payload = {'source': appkey, 'access_token': access_token, 'uid': uid} r = requests.get('https://api.weibo.com/2/users/show.json', params = payload) userinfo = r.json() if ('name' in userinfo): count = User.objects.filter(uid = uid).count() if (count == 0): user = User(uid, userinfo['name'], userinfo['profile_image_url']) user.save() request.session["mid"] = uid result = __resultToJson('0', '', {'uid': uid, 'nickname': userinfo['name'], 'imageUrl': userinfo['profile_image_url']}) return HttpResponse(result, content_type = 'application/json') else: result = __resultToJson('2', '', {}) return HttpResponse(result, content_type = 'application/json')
def qqlogin(request): """a method for qq login""" #use the access_token to get the openid from qq server access_token = request.POST['access_token'] payload = {'access_token': access_token} r = requests.get("https://graph.qq.com/oauth2.0/me", params = payload) callback = r.text if (callback.find("openid") == -1): result = __resultToJson('1', '', {}) return HttpResponse(result, content_type = 'application/json') try: openid = str(callback.split("{")[1].split("}")[0].split(",")[1].split(":")[1].split("\"")[1]) except: result = __resultToJson('2', '', {}) return HttpResponse(result, content_type = 'application/json') #get the userinfo according to the access_token and openid #TODO:this appid should be written in the conf file appid = "100510779" payload = {'access_token': access_token, 'oauth_consumer_key': appid, 'openid': openid} r = requests.get('https://graph.qq.com/user/get_user_info?', params = payload) userinfo = r.json() if ("nickname" in userinfo): count = User.objects.filter(uid = openid).count() if (count == 0): user = User(openid, userinfo['nickname'], userinfo['figureurl']) user.save() request.session['mid'] = openid result = __resultToJson('0', '', {'uid':openid, 'nickname': userinfo['nickname'], 'imageUrl': userinfo['figureurl']}) return HttpResponse(result, content_type = 'application/json') else: result = __resultToJson('2', '', {}) return HttpResponse(result, content_type = 'application/json')
def create_room(nickname): room = Room(code=generate_room_code(), state=Room.WAITING) room.save() user = User(room=room, nickname=nickname, is_owner=True, unique_id=uuid.uuid4().__str__()) user.save() return CreateRoomResult(room, user)
def _create_new_user(rm, device_id): """ Creates a new user and returns its instance :param rm: :param device_id: :return: user object (django model), """ while True: try: with transaction.atomic(): temp_room = Room.objects.select_for_update().filter( id=rm.id).first() tablet_id = ConnectedTablet.objects.filter( device_id=device_id).first().tablet_id player_id = temp_room.counter pseudo = parameters.pseudos[player_id] u = User(player_id=player_id, pseudo=pseudo, room_id=rm.id, training_done=False, score=0, training_score=0, state=game.room.state.states.WELCOME, tablet_id=tablet_id) u.save() u.production_good = _get_user_production_good(rm, u) # prod i - 1 rule u.consumption_good = (u.production_good + 1) % rm.n_type u.save(update_fields=["production_good", "consumption_good"]) temp_room.counter += 1 temp_room.save(update_fields=['counter']) return u except (django.db.IntegrityError, django.db.OperationalError, django.db.utils.OperationalError, psycopg2.IntegrityError, psycopg2.OperationalError) as e: print("*" * 50) print("INTEGRITY ERROR" + "!" * 10) print(str(e)) print("*" * 50) threading.Event().wait(1 + np.random.random() * 4) continue
class IRepositoryPlayer: def __init__(self): self.user = None def save_player(self, username, room): self.user = User(game=Game.objects.get(room_name=room), username=username, date_created=datetime.datetime.now()) self.user.save() return self.user def get_player_by_id(self, user_id): self.user = User.objects.get(id=user_id) return self.user def get_players_by_username_and_room(self, username, room): self.user = User.objects.filter( username=username, game=Game.objects.get(room_name=room).id) return self.user def update_player_username_by_id(self, user_id, name): self.user = User.objects.get(id=user_id) self.user.username = name self.user.save() return self.user def update_player_username_by_username(self, username, name): self.user = User.objects.get(username=username) self.user.username = name self.user.save() return self.user def update_player_monster_name_by_id(self, user_id, monster): self.user = User.objects.get(id=user_id) self.user.monster_name = monster self.user.save() return self.user def update_player_monster_name_by_username(self, username, monster): self.user = User.objects.get(username=username) self.user.monster_name = monster self.user.save() return self.user def delete_player_by_id(self, user_id): self.user = User.objects.get(id=user_id) self.user.delete() return None def delete_player_by_username(self, username): self.user = User.objects.get(username=username) self.user.delete() return None
def register(request): if request.GET: username = request.GET.get('username') pwd = request.GET.get('password') email = request.GET.get('email') u = User.objects.filter(UserName=username) if u: return HttpResponse("The name has already been used.") else: u = User(UserName=username, Password=pwd, Email=email) u.save() return HttpResponseRedirect("/game/")
def register(request): if request.GET: username = request.GET.get('username') pwd = request.GET.get('password') email = request.GET.get('email') u = User.objects.filter(UserName = username) if u: return HttpResponse("The name has already been used.") else: u = User(UserName = username,Password = pwd,Email = email) u.save() return HttpResponseRedirect("/game/")
def index(request): if request.method == 'POST': post = (request.POST) form = GameForm(post) if form.is_valid(): #create the user if they don't exist already user = User.objects.filter(name=post['name'])[:1] if not user: new_user = User(name=post['name']) new_user.save() try: user = User.objects.get(name=post['name']) except User.DoesNotExist: return HttpResponse('database error', status=404) #create the game including minefield then save it to database if post['difficulty'] == 'beginner': game = Game(width=9,height=9,number_of_mines=10,difficulty='beginner',user=user) elif post['difficulty'] == 'intermediate': game = Game(width=16,height=16,number_of_mines=40,difficulty='intermediate',user=user) elif post['difficulty'] == 'expert': game = Game(width=30,height=16,number_of_mines=99,difficulty='expert',user=user) game.create_minefield() game.fields_left = game.width * game.height game.save() #redirect to the game page args = {'name': user.name, 'game_id': str(game.id)} return HttpResponseRedirect(reverse('game_start', kwargs=args)) else: form = GameForm() top_beginner_users = User.objects.filter(game__difficulty='beginner', game__won=True).order_by('game__won') beginner_dict = create_high_scores(top_beginner_users) top_inter_users = User.objects.filter(game__difficulty='intermediate', game__won=True) inter_dict = create_high_scores(top_inter_users) top_expert_users = User.objects.filter(game__difficulty='expert', game__won=True) expert_dict = create_high_scores(top_expert_users) return render(request, 'index.html', { 'form': form, 'beginner_dict': beginner_dict, 'inter_dict': inter_dict, 'expert_dict': expert_dict })
def join_room(roomCode, nickname): room = Room.objects.filter(code=roomCode).first() if not room: raise NotFound() if room.state == room.PLAYING: raise APIException(code=400) if room.user_set.count() > 8: raise APIException(code=400) user = User(room=room, nickname=nickname, is_owner=False, unique_id=uuid.uuid4().__str__()) user.save() return JoinRoomResult(room, user)