def get(self): if not WhiteTokenModel.is_jti_whitelisted(get_raw_jwt()["jti"]): return {'message': 'Not logged in'}, 205 try: print("Starting", flush=True) current_user = get_jwt_identity() userid = request.args.get('userid') tripid = request.args.get('tripid') print("Got data", flush=True) # If a tripid is provided, it will return just that trip if (tripid): print("tripid was provided", flush=True) trip = Trip.find_by_tid(int(tripid)) print("Found trip", flush=True) # Making sure that the user asking for the trip has access to it, either because the user owns it, or is friends with the owner isFriends = Friends.find_by_uid_and_fid( current_user, trip.user_id) if (trip.user_id != current_user and isFriends == None): print("No access", flush=True) return { "message": "You do not have access to that trip" }, 203 elif (isFriends.friend_status == "accepted" or trip.user_id == current_user): print("Returning", flush=True) return { "message": "The trip with id {} was found".format(tripid), "trips": [trip.trip_json], "tid": trip.trip_id, "username": User.find_by_uid(trip.user_id).user_name }, 200 if (not userid): userId = current_user else: userId = userid if (current_user == userId or Friends.find_by_uid_and_fid(current_user, userId)): all_trips = Trip.find_all_public_trips(userId) return { "message": "The trips of user {} was found".format( User.find_by_uid(userId).user_name), "trips": json.dumps(all_trips) }, 200 else: return { "message": "You are not friends with the requested user, therefore you cannot get their trips" }, 203 except Exception as error: return { "message": "Something went wrong on the server", "error": str(error) }, 500
def post(self): if not WhiteTokenModel.is_jti_whitelisted(get_raw_jwt()["jti"]): return {'message': 'Not logged in'}, 205 current_user = get_jwt_identity() data = friend_edit_parser.parse_args() if not data["friend_name"]: return {'message': 'Friend name is required'}, 203 friend_user = User.find_by_username(data["friend_name"]) if friend_user == None: return {"message": "Friends user object not found"}, 204 if not data["status"]: return {'message': 'Status is required'}, 203 try: if data["status"] == "send": friend_object = Friends.find_by_uid_and_fid( current_user, friend_user.user_id) if friend_object != None: return {"message": "Error: Already on list"}, 203 friends_friend_object = Friends.find_by_uid_and_fid( friend_user.user_id, current_user) if friends_friend_object != None: return {"message": "Error: Already on friends list"}, 203 if friend_user.user_id == current_user: return { "message": "Error: Can't send a request to yourself" }, 203 own_friend_entry = Friends(user_id=current_user, friend_id=friend_user.user_id, friend_status="sent") friends_friend_entry = Friends(user_id=friend_user.user_id, friend_id=current_user, friend_status="received") own_friend_entry.save_to_db() friends_friend_entry.save_to_db() return {'message': "Friend request sent."}, 201 if data["status"] == "accept": friend_object = Friends.find_by_uid_and_fid( current_user, friend_user.user_id) if friend_object == None: return {"message": "Friend object not found"}, 204 friends_friend_object = Friends.find_by_uid_and_fid( friend_user.user_id, current_user) if friends_friend_object == None: return {"message": "Friends friend object not found"}, 204 if friend_object.friend_status != "received" or friends_friend_object.friend_status != "sent": return { "message": "Can't accept because there is no request." }, 203 friend_object.friend_status = "accepted" friends_friend_object.friend_status = "accepted" friend_object.commit() friends_friend_object.commit() return {'message': "Friend request accepted."}, 201 if data["status"] == "delete": friend_object = Friends.find_by_uid_and_fid( current_user, friend_user.user_id) if friend_object == None: return {"message": "Friend object not found"}, 204 friends_friend_object = Friends.find_by_uid_and_fid( friend_user.user_id, current_user) if friends_friend_object == None: return {"message": "Friends friend object not found"}, 204 friend_object.delete_from_db() friends_friend_object.delete_from_db() return { 'message': 'Friend entry for friend {} was deleted'.format( friend_user.user_name), }, 201 return {'message': "Invalid status."}, 201 except Exception as err: return {'message': 'Something went wrong', "error": str(err)}, 500