def remove_friend(self, request): print "in remove_friend" with db(session): friendship = Friendship.query.get((request.userId, request.friendId)) # (user_id, friend_id) if friendship: session.delete(friendship) session.commit() return RemoveFriendResponse(friend_removed=True) return RemoveFriendResponse(friend_removed=False)
def answer_lobby_invite(self, request): if not isinstance(request, AnswerLobbyInviteRequest): return RpcError(message="Wrong message type, expecting AnswerLobbyInviteRequest", error_code=1) with db(session): query_type = Lobby.query.filter(Lobby.lobby_id==request.lobbyId).first() if not query_type: return RpcError(message="Lobby does not exists", error_code=2) accepted_count = LobbyMembership.query.filter(LobbyMembership.lobby_id==request.lobbyId).filter(LobbyMembership.status=="member").count() user_lobby = LobbyMembership.query.filter(LobbyMembership.lobby_id==request.lobbyId).filter(LobbyMembership.user_id==request.userId).first() if not user_lobby: return RpcError(message="Not permitted to the lobby", error_code=30) if(request.answer == "accept"): if(query_type.game_type >= accepted_count + 1): session.delete(user_lobby) session.add(LobbyMembership(lobby_id=user_lobby.lobby_id, status="member", user_id=user_lobby.user_id)) session.commit() return AnswerLobbyInviteResponse(answer=True) else: session.delete(user_lobby) session.commit() return RpcError(message="Lobby is full", error_code=31) elif(request.answer == "deny"): try: session.delete(user_lobby) session.commit() return AnswerLobbyInviteResponse(answer=True) except Exception as e: return AnswerLobbyInviteResponse(answer=False) return RpcError(message="Unknown answer should be accept or deny", error_code=3)
def remove_lobby(self, request): if not isinstance(request, RemoveLobbyRequest): return RpcError(message="Wrong message type, expecting RemoveLobbyRequest", error_code=1) try: with db(session): # Delete from Lobby table lobby = Lobby.query.filter(Lobby.lobby_id==request.lobbyId).filter(Lobby.owner_id==request.userId).first() if(lobby==None): return RpcError(message="No permission to manage the lobby", error_code=35) session.delete(lobby) # Delete from LobbyMembership lobby_membership = LobbyMembership.query.filter(LobbyMembership.lobby_id==request.lobbyId).all() for member in lobby_membership: session.delete(member) session.commit() return RemoveLobbyResponse(lobby_removed=True) except Exception as e: return RemoveLobbyResponse(lobby_removed=False)