Guest User

Untitled

a guest
Nov 16th, 2018
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.99 KB | None | 0 0
  1. from flask import Flask, request, session, jsonify,make_response
  2. from app.models import *
  3. from app.api.user_authentication import token_required
  4. from app.function import json_response
  5. from app import users, userIds, parcelIds, parcels, old_usernames
  6. from flask_jwt_extended import create_access_token, get_jwt_identity, jwt_required
  7.  
  8.  
  9. @app.route('/')
  10. def index():
  11. return '<h2> Welcome to sendIt. Happy browsing</h2>'
  12.  
  13. @app.route('/api/v1/auth/login', methods=['POST'])
  14. def login():
  15. #route to login a user that has an account with the app
  16. auth = request.get_json()
  17. username = auth.get('username')
  18. password = auth.get('password')
  19.  
  20. for user in users:
  21. if not username or not password:
  22. return json_response("message", "Could not verify username or password"), 401
  23.  
  24. if (username == user['username'] and password == user['password']):
  25. token = create_access_token(identity={"userId":userIds,"username":username})
  26.  
  27. return make_response('User Token', token), 200
  28. return json_response("message", "Could not verify! username and password dont match"), 401
  29.  
  30.  
  31.  
  32. @app.route('/api/v1/auth/signup', methods=['POST'])
  33. def register_new_user():
  34. """route to sign up a new user to use the sendIt application"""
  35.  
  36. response = request.get_json()
  37. if len(response.keys()) == 3:
  38. username = response['username']
  39. email = response['email']
  40. password = response['password']
  41. if (username is not None and email is not None and password is not None
  42. ) and (username != '' and email != ''
  43. and password != ''):
  44. new_user = User(username, email, password)
  45.  
  46. users.append(new_user.create_new_user())
  47. return json_response('message',users)
  48. else:
  49. return json_response('message', 'Some fields are empty! '), 400
  50. else:
  51. return json_response('message', 'Failed to create user, check to see whether the email, username and password fields are not empty'), 400
  52.  
  53.  
  54. @app.route('/api/v1/auth/logout', methods=['POST'])
  55. @jwt_required
  56. def logout_user(logged_in_user):
  57. request.authorization = None
  58. logged_in_user = None
  59. global users
  60. global userIds
  61. global parcels
  62. global parcelIds
  63. global usernames
  64. del users[:]
  65. del parcelIds[:]
  66. del parcels[:]
  67. del usernames[:]
  68. del userIds[:]
  69. if not request.authorization:
  70. return json_response('message', 'You have been successfully logout'), 200
  71. else:
  72. return json_response('message', 'Something went wrong, please try again '), 400
  73.  
  74.  
  75.  
  76. @app.route('/api/v1/parcels', methods=['POST'])
  77. @jwt_required
  78. def create_new_parcel_order(logged_in_user):
  79. """create new parcel order"""
  80. current_user = get_jwt_identity()
  81. response = request.get_json()
  82. if response:
  83. if (len(response.keys()) == 4):
  84. userId = current_user['userId']
  85. pickup_location = response['pickup_location']
  86. destination = response['destination']
  87. recipient = response['recipient']
  88. description = response['description']
  89. parcel = parcel_object.create_parcel_order(userId, recipient, pickup_location, destination, description)
  90. if parcel:
  91. return json_response('message', 'Parcel order successfully created! Check all parcel orders to confirm'), 201
  92. else:
  93. return json_response('message','cannot create parcel with empty fields'), 400
  94. else:
  95. return json_response('message', 'Cannot create parcel! Some fields are empty'), 400
  96.  
  97. @app.route('/api/v1/parcels', methods=['GET'])
  98. @jwt_required
  99. def get_all_parcel_orders(logged_in_user):
  100. """ get all parcel_orders that were created"""
  101. if parcels:
  102. return jsonify('parcels', parcel_object.get_all_parcel_orders()), 200
  103. else:
  104. return json_response('message', 'No data to display. Create a delivery order'), 404
  105.  
  106.  
  107. @app.route('/api/v1/parcels/<int:parcelId>', methods=['PUT'])
  108. @jwt_required
  109. def modify_parcel_order(logged_in_user, parcelId):
  110. """update parcel"""
  111. if int(parcelId) in parcelIds and parcelId is not None:
  112. response = request.get_json()
  113. parcelId = int(parcelId)
  114. if 'recipient' in response.keys():
  115. recipient = response['recipient']
  116. else:
  117. recipient = ''
  118. if 'pickup_location' in response.keys():
  119. pickup_location = response['pickup_location']
  120. else:
  121. pickup_location = ''
  122. if 'destination' in response.keys():
  123. destination = response['destination']
  124. else:
  125. destination = ''
  126. if 'description' in response.keys():
  127. description = response['description']
  128. else:
  129. description = ''
  130. userId = int(User.get_userId_by_username(logged_in_user[0]))
  131. command = ParcelOrder.modify_parcel(userId, parcelId, recipient, pickup_location,
  132. destination, description)
  133. if command:
  134. return json_response(
  135. 'message', 'successfully updated parcel order ' + int(parcelId)), 201
  136. else:
  137. return json_response('message', 'Failed to update parcel order. Check to make sure you are logged in' + int(parcelId)), 400
  138. else:
  139. return json_response('message', 'parcel id does not exist'), 400
  140.  
  141.  
  142. @app.route('/api/v1/parcels/<int:parcelId>', methods=['DELETE'])
  143. @jwt_required
  144. def delete_parcel_order(logged_in_user, parcelId):
  145. """delete parcel by id"""
  146. parcelId = int(parcelId)
  147. if parcelId in parcelIds:
  148. parcel_to_cancel = ParcelOrder.get_parcel_by_id(parcelId)
  149. userId = int(User.get_userId_by_username(logged_in_user[0]))
  150. command = ParcelOrder.delete_parcel(userId, parcelId)
  151. if command:
  152. return json_response('message','successfully deleted parcel delivery order' + int(parcelId)), 200
  153. else:
  154. return json_response('message', 'Failed to delete! Only user can delete the parcel order')
  155. else:
  156. return json_response('message', 'parcel id does not exist'), 404
Add Comment
Please, Sign In to add comment