def userFind(): # convert request data to dictionary data = toDict(request.data) success = False message = "" status = "" # OK, DENIED, WARNING response = {} # check if user exists # check if health card number exists success = PatientService.patientExists(data['hcnumber']) # if health card number exists & authenticated, then get the patient if success: message = "Patient found." status = "OK" response = json.dumps({ 'success': success, 'status': status, 'message': message }) # else the user is not authenticated, request is denied else: message = "Patient not found." status = "DENIED" response = json.dumps({ 'success': success, 'status': status, 'message': message }) return response
def displayimageRoute(): # convert request data to dictionary data = toDict(request.data) success = False # assume the response is unsucessful message = "" # assume an empty message status = "" # accepted statues: 'OK', 'DENIED', 'FAILURE', 'WARNING', 'INVALID' response = {} # assume the response is empty dict() for now # If the request is PUT we assume your're trying to update the display_image if request.method == 'PUT': # Check if display image change wroks success = Users.updateDisplayImage(data['user_id'], data['display_image']) if success: message = "display_image updated." status = "OK" else: message = "display_image could not be updated, no user with that id." status = "FAILURE" else: message = "HTTP method invalid." status = "WARNING" success = False response = json.dumps({ 'success': success, 'status': status, 'message': message }) return response
def checkAvailability(): # convert request data to dictionary data = toDict(request.data) success = False message = "" status = "" # OK, DENIED, WARNING response = {} roomAvailability = None # check if room number exists success = RoomService.roomExists(data['roomNumber'], data['clinic_id']) # if room exists, room availabilities if success: roomAvail = RoomScheduleService.getTimeSlotsByDateAndRoom(data['roomNumber'], data['clinic_id'], data['date']) message = "Room availabilities retrieved." status = "OK" response = json.dumps({'success': success, 'status': status, 'message': message, 'roomAvail': roomAvailability}) # else the room doesn't exist and request is denied. else: message = "Room does not exist." status = "DENIED" response = json.dumps({'success': success, 'status': status, 'message': message,'roomAvail': roomAvail}) return response
def emailRoute(): # convert request data to dictionary data = toDict(request.data) success = False # assume the response is unsucessful message = "" # assume an empty message status = "" # accepted statues: 'OK', 'DENIED', 'FAILURE', 'WARNING', 'INVALID' response = {} # assume the response is empty dict() for now # If the request is POST we assume your trying to get email if request.method == 'POST': # Check if user exists success = Users.userExists(data['email']) if success: message = "User exists." status = "WARNING" else: message = "User does not exist." status = "OK" else: message = "HTTP method invalid." status = "WARNING" success = False response = json.dumps({ 'success': success, 'status': status, 'message': message }) return response
def userRoute(id): # convert request data to dictionary data = toDict(request.data) success = False # assume the response is unsucessful message = "" # assume an empty message status = "" # accepted statues: 'OK', 'DENIED', 'FAILURE', 'WARNING', 'INVALID' response = {} # assume the response is empty dict() for now user = {} # set the users to an empty list if request.method == 'PUT': # Modify a user and find our whether it is successful or not success = Users.modifyUser(id, fname=data['fname'], lname=data['lname'], engineer=data['engineer'], display_image=data['display_image']) if success: status = "OK" message = "User information Updated." else: status = "FAILURE" message = "User does not exist." elif request.method == 'GET': # Get the user user = Users.getUserById(id) if user is not None: success = True status = "OK" message = "User returned." else: success = False status = "FAILURE" message = "No user by that id." elif request.method == 'DELETE': # Get the user success = Users.deleteUser(id) if success: status = "OK" message = "User deleted" else: status = "FAILURE" message = "User not found" else: success = False status = "WARNING" message = "HTTP method invalid." response = json.dumps({ 'success': success, 'status': status, 'message': message, 'user': user }) return response
def updateTags(id): data = toDict(request.data) if request.method == 'PUT': try: Questions.updateTags(id, data['tags']) app.logger.info(data['tags']) response = json.dumps({ 'success': True, 'status': 'OK', 'message': 'Tags updated.' }) except KeyError: response = json.dumps({ 'success': False, 'status': 'FAILURE', 'message': 'Tags not updated.' }) else: response = json.dumps({ 'success': False, 'status': 'FAILURE', 'message': 'Not proper keys.' }) return response
def questionsIDRoute(id): data = toDict( request.data ) # toDict takes the request data and converts it to a dictionary success = False # assume the response is unsucessful message = "" # assume an empty message status = "" # accepted statues: 'OK', 'DENIED', 'FAILURE', 'WARNING', 'INVALID' response = {} # assume the response is empty dict() for now if request.method == 'PUT': try: vote_status = data['vote_status'] Votes.setVote(user_id=data['loggedin_id'], comment_id=id, comment_status=data['comment_status'], vote_status=vote_status) vote = Votes.getVote(user_id=data['loggedin_id'], comment_id=id, comment_status=data['comment_status']) response = json.dumps({ 'success': True, 'status': 'OK', 'message': 'Vote is set.' }) except KeyError: response = json.dumps({ 'success': False, 'status': 'FAILURE', 'message': 'Not proper keys.' }) return response
def answerQuestion(): data = toDict( request.data ) # toDict takes the request data and converts it to a dictionary success = False # assume the response is unsucessful message = "" # assume an empty message status = "" # accepted statues: 'OK', 'DENIED', 'FAILURE', 'WARNING', 'INVALID' response = {} # assume the response is empty dict() for now answer = {} if request.method == 'POST': # Create a user and find our whether it is successful or not answer = Answers.createAnswer(data['text'], data['user_id'], data['question_id']) if answer is not None: answer['user'] = Users.getUser(answer['user_id']) success = True status = "OK" message = "Answer added." else: success = False status = "FAILURE" message = "Error." # make the response a json object response = json.dumps({ 'success': success, 'status': status, 'message': message, 'question': question })
def userAuthenticate(): # convert request data to dictionary data = toDict(request.data) success = False message = "" status = "" # OK, DENIED, WARNING response = {} user = {} # logging in # check if health card number exists success = PatientService.patientExists(data['hcnumber']) # Verify User success = PatientService.authenticate(data['hcnumber'], data['password']) # if health card number exists & authenticated, then get the patient if success: user = PatientService.getPatient(data['hcnumber']) # convert datetimes to strings user['birthday'] = user['birthday'].strftime("%Y-%m-%d") if user['lastAnnual'] is not None: user['lastAnnual'] = user['lastAnnual'].strftime("%Y-%m-%d") message = "Patient authenticated." status = "OK" response = json.dumps({ 'success': success, 'status': status, 'message': message, 'user': user }) # else the user is not authenticated, request is denied else: message = "User not authenticated." status = "DENIED" response = json.dumps({ 'success': success, 'status': status, 'message': message, 'user': user }) return response
def userAuthenticate(): # convert request data to dictionary data = toDict(request.data) success = False # assume the response is unsucessful message = "" # assume an empty message status = "" # accepted statues: 'OK', 'DENIED', 'FAILURE', 'WARNING', 'INVALID' response = {} # assume the response is empty dict() for now user = {} # If the reques is POST we assume your trying to login if request.method == 'POST': # Verify User success = Users.userVerified(data['email'], data['password']) # if verified then get the user if success: user = Users.getUser(data['email']) message = "User authenticated." status = "OK" response = json.dumps({ 'success': success, 'status': status, 'message': message, 'user': user }) # else the user is not authenticates, request is denied else: message = "User not authenticated." status = "DENIED" else: message = "HTTP method invalid." status = "WARNING" success = False response = json.dumps({ 'success': success, 'status': status, 'message': message, 'user': user }) return response
def userAuthenticate(): # convert request data to dictionary data = toDict(request.data) success = False message = "" status = "" # OK, DENIED, WARNING response = {} user = {} # check if access ID exists success = NurseService.nurseExists(data['access_ID']) # Verify User success = NurseService.authenticate(data['access_ID'], data['password']) # if access ID exists & authenticated, then get the patient if success: user = NurseService.getNurse(data['access_ID']) # convert datetimes to strings message = "Nurse authenticated." status = "OK" response = json.dumps({ 'success': success, 'status': status, 'message': message, 'user': user }) # else the user is not authenticated, request is denied else: message = "User not authenticated." status = "DENIED" response = json.dumps({ 'success': success, 'status': status, 'message': message, 'user': user }) return response
def questionsIDRoute(id): data = toDict( request.data ) # toDict takes the request data and converts it to a dictionary success = False # assume the response is unsucessful message = "" # assume an empty message status = "" # accepted statues: 'OK', 'DENIED', 'FAILURE', 'WARNING', 'INVALID' response = {} # assume the response is empty dict() for now if request.method == 'PUT': if data['actions'] == 'ups': success = Questions.incrementUps(id) if data['actions'] == 'downs': success = Questions.incrementDowns(id) response = json.dumps({ 'success': success, 'status': status, 'message': message }) print(response) return response
def newPassword(id): # convert request data to dictionary data = toDict(request.data) success = False # assume the response is unsucessful message = "" # assume an empty message status = "" # accepted statues: 'OK', 'DENIED', 'FAILURE', 'WARNING', 'INVALID' response = {} # assume the response is empty dict() for now user = {} # set the users to an empty list if request.method == 'PUT': #Change user's password app.logger.info(data) success = Users.updatePassword(email=data['email'], oldPassword=data['oldPassword'], newPassword=data['newPassword']) if success: status = "OK" message = "Password changed." else: status = "FAILURE" message = "User does not exist." else: success = False status = "WARNING" message = "HTTP method invalid." response = json.dumps({ 'success': success, 'status': status, 'message': message, 'user': user }) return response
def usersRoute(): data = toDict( request.data ) # toDict takes the request data and converts it to a dictionary success = False # assume the response is unsucessful message = "" # assume an empty message status = "" # accepted statues: 'OK', 'DENIED', 'FAILURE', 'WARNING', 'INVALID' response = {} # assume the response is empty dict() for now users = [] # set the users to an empty list user = {} # assume there is none User if request.method == 'POST': # Create a user and find our whether it is successful or not success = Users.createUser(fname=data['fname'], lname=data['lname'], email=data['email'], password=data['password'], engineer=data['engineer'], display_image=data['display_image']) if success: status = "OK" user_id = Users.getUserId(email=data['email']) mail = Mail(app) msg = Message("Email confirmation", recipients=[data['email']]) msg.html = "<body>To confirm your email please click on this link: http://localhost:3000/users/" + str( user_id) + "</body>" mail.send(msg) else: status = "FAILURE" message = "Duplicate Email." # make the response a json object response = json.dumps({ 'success': success, 'status': status, 'message': message, 'user': user }) elif request.method == 'GET': # Get all users users = Users.getUsers() if users != []: success = True status = "OK" message = "Users returned." else: success = False status = "FAILURE" message = "Duplicate Email" response = json.dumps({ 'success': success, 'status': status, 'message': message, 'users': users }) elif request.method == 'DELETE': success = False status = "DENIED" message = "Cannot delete all users." response = json.dumps({ 'success': success, 'status': status, 'message': message }) else: success = False status = "WARNING" message = "HTTP method invalid." response = json.dumps({ 'success': success, 'status': status, 'message': message }) return response
def questionsRoute(): data = toDict( request.data ) # toDict takes the request data and converts it to a dictionary success = False # assume the response is unsucessful message = "" # assume an empty message status = "" # accepted statues: 'OK', 'DENIED', 'FAILURE', 'WARNING', 'INVALID' response = {} # assume the response is empty dict() for now question = {} questions = [] if validateQuestionRequest(data): message = "Invalid data request object (title, text, engineer, user_id)." status = "FAILURE" # make the response a json object response = json.dumps({ 'success': success, 'status': status, 'message': message, 'question': question }) elif request.method == 'POST': # get tags from post request, if not set then there are no tags try: tags = data['tags'] except: tags = '' # Create a user and find our whether it is successful or not question = Questions.createQuestion(data['title'], data['text'], data['engineer'], data['user_id'], tags=tags) print("---------------------") app.logger.info(question) print("---------------------") if question is not None: success = True status = "OK" message = "Question added." question = questionResponse(question) else: success = False status = "FAILURE" message = "Error." # make the response a json object response = json.dumps({ 'success': success, 'status': status, 'message': message, 'question': question }) elif request.method == 'GET': # url get request questionArgs = request.args.to_dict() # get logged in user id, if it's set then continue, else set it to -1 try: id = int(questionArgs['loggedin_id']) except: id = -1 app.logger.info("USER ID (-1 means logged out): " + str(id)) if 'question_id' in questionArgs: q = Questions.getQuestion(questionArgs['question_id'], id) app.logger.info(q) question = questionResponse(q, id) app.logger.info(question) success = True status = 'OK' message = 'Question with anwsers.' elif 'user_id' in questionArgs and 'engineer' not in questionArgs: questions = Questions.getQuestionsByUser(questionArgs['user_id'], id) success = True status = 'OK' message = 'List of several questions by user_id' elif 'user_id' in questionArgs and 'engineer' in questionArgs: questions = Questions.getQuestionsByBoth(questionArgs['engineer'], questionArgs['user_id'], id) success = True status = 'OK' message = 'List of several questions by user_id' elif 'engineer' in questionArgs: questions = Questions.getQuestionsByEngineer( questionArgs['engineer'], id) success = True status = 'OK' message = 'List of several questions by engineer' else: questions = Questions.getQuestions(id) success = True status = 'OK' message = 'List of several questions' if 'sort' in questionArgs and 'reverse' in questionArgs: questions = sorted(questions, key=lambda k: k[questionArgs['sort']], reverse=int(questionArgs['reverse'])) elif 'sort' in questionArgs: questions = sorted(questions, key=lambda k: k[questionArgs['sort']]) if question: response = json.dumps({ 'success': success, 'status': status, 'message': message, 'question': question }) else: response = json.dumps({ 'success': success, 'status': status, 'message': message, 'questions': questions }) else: success = False status = "WARNING" message = "HTTP method invalid." response = json.dumps({ 'success': success, 'status': status, 'message': message }) return response
def newAppointmentByDoctor(): message = "" success = False status_code = 400 data = toDict(request.data) doctor_permit_number = data['permit_number'] patient_health_card_number = data['hcnumber'] clinic_id = data['clinic_id'] date = data['date'] time = data['time'] appointment_type = data['appointment_type'] patientExists = True room_is_available = True bookable = True if appointment_type == 'Annual': length = 60 else: length = 20 # preliminary checks if not DoctorService.doctorExists(doctor_permit_number): message = "Doctor " + doctor_permit_number + " doesn't exist." success = False status_code = 404 response = json.dumps({"success": success, "message": message}) return response, status_code if not PatientService.patientExists(patient_health_card_number): message = "Patient " + doctor_permit_number + " doesn't exist." patientExists = False success = False status_code = 404 response = json.dumps({ "success": success, "message": message, "patientExists": patientExists, "room_is_available": room_is_available }) return response, status_code # finding out if the doctor is available if appointment_type == 'Annual': doctor_is_available = DoctorScheduleService.isDoctorAvailableForAnnual( permit_number=doctor_permit_number, date=date, time=time) else: doctor_is_available = DoctorScheduleService.isDoctorAvailable( permit_number=doctor_permit_number, date=date, time=time) # finding out if a room is avail if appointment_type == 'Annual': room_is_available = RoomScheduleService.findRoomForAnnual( clinic_id, date, time) else: room_is_available = RoomScheduleService.findRoomAtTime( clinic_id, date, time) # to avoid potential double bookings patient_is_already_booked = AppointmentService.is_patient_already_booked( patient_hcnumber=patient_health_card_number, time=time, length=length, clinic_id=clinic_id, date=date) # check if annual, if so, check if bookable if appointment_type == 'Annual': bookable = PatientService.canBookAnnual(patient_health_card_number) # booking attempt if doctor_is_available and room_is_available and not patient_is_already_booked and bookable: AppointmentService.bookAppointmentWithASpecificDoctor( patient_hcnumber=patient_health_card_number, doctor_permit_number=doctor_permit_number, length=length, time=time, date=date, clinic_id=clinic_id) message = "Appointment has been booked successfully" success = True status_code = 200 response = json.dumps({ "success": success, "message": message, "patientExists": patientExists, "room_is_available": room_is_available, "patientIsAlreadyBooked": patient_is_already_booked }) return response, status_code else: message = "Cannot book." success = False status_code = 200 response = json.dumps({ "success": success, "message": message, "patientExists": patientExists, "room_is_available": room_is_available, "doctor_is_available": doctor_is_available, "patientIsAlreadyBooked": patient_is_already_booked, "bookable": bookable }) return response, status_code