Advertisement
Guest User

Untitled

a guest
Jul 25th, 2018
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.80 KB | None | 0 0
  1. (venv2) gordonbalaaka@Gordons-MacBook-Air.local:~/documents/andela/mydiary_gb$cat /Users/gordonbalaaka/Documents/Andela/MyDiary_GB/app.py in terminal
  2. """
  3. api endpoints are defined in this file
  4. """
  5.  
  6. from flask import Flask, render_template, request, \
  7. jsonify, abort, make_response, request, url_for, \
  8. flash, redirect
  9. from flask_restful import Resource, Api
  10. import datetime
  11. import mydiary
  12. from mydiary import DiaryEntry
  13.  
  14.  
  15. app = Flask(__name__)
  16. api = Api(app)
  17. NOW = datetime.datetime.now()
  18.  
  19.  
  20. """ this route links to the welcome page """
  21. @app.route('/')
  22. def welcome():
  23. return render_template('index.html')
  24.  
  25. """ this route links to the registration page """
  26. @app.route('/registration')
  27. def registration():
  28. return render_template('registration.html')
  29.  
  30. """ this route links to the home page """
  31. @app.route('/home')
  32. def home():
  33. return render_template('home.html')
  34.  
  35. """ this route links to the entry edit page """
  36. @app.route('/edit')
  37. def edit():
  38. return render_template('edit.html')
  39.  
  40. """ this route links to the user's profile """
  41. @app.route('/profile')
  42. def profile():
  43. return render_template('profile.html')
  44.  
  45. """ this route links to the login page """
  46. @app.route('/login', methods=['GET', 'POST'])
  47. def login():
  48. error = None
  49. if request.method == 'POST':
  50. if (request.form['email'] != my_diary_object.current_user.email) or \
  51. request.form['password'] != my_diary_object.current_user.password:
  52. error = "Invalid Credentials"
  53. else:
  54. flash('You were logged in.')
  55. return redirect(url_for('home'))
  56. return render_template('login.html', error=error)
  57.  
  58. """ this route logs the user out """
  59. @app.route('/logout')
  60. def logout():
  61. flash('You were logged out.')
  62. return redirect(url_for('welcome'))
  63.  
  64.  
  65. """ this route returns a single diary entry """
  66. @app.route('/home/api/v1/entries/<int:diary_entry_id>', methods=['GET'])
  67. def get_entry(diary_entry_id):
  68. """ this method outputs one entry """
  69. diary_entry_list = [entry for entry in \
  70. my_diary_object.user_entries.entry_list if \
  71. entry.entry_id == diary_entry_id]
  72. if diary_entry_list == []:
  73. return jsonify({'error': 'Bad request, that ID does not exist.'})
  74. else:
  75. entry = {'id':diary_entry_list[0].entry_id, \
  76. 'entrydata':diary_entry_list[0].data, \
  77. 'datecreated':diary_entry_list[0].created}
  78. return jsonify({'entry':entry})
  79.  
  80. """ this route returns all diary entries """
  81. @app.route('/home/api/v1/entries', methods=['GET'])
  82. def get_all_entries():
  83. """ this method outputs all entries """
  84. if len(my_diary_object.user_entries.entry_list) == 0:
  85. abort(404)
  86. diary_entry_list = []
  87. for entry in my_diary_object.user_entries.entry_list:
  88. entry = {
  89. 'id':entry.entry_id,
  90. 'entrydata':entry.data,
  91. 'datecreated':entry.created
  92. }
  93. diary_entry_list.append(entry)
  94. return jsonify([{'entrylist':diary_entry_list[:]}])
  95.  
  96. """ this route adds single diary entry """
  97. @app.route('/home/api/v1/entries', methods=['POST'])
  98. def create_entry():
  99. """ this method creates a new entry """
  100. if not request.json or not 'entrydata' in request.json:
  101. abort(400)
  102. entry = my_diary_object.user_entries.createEntry
  103. new_entry = DiaryEntry(entry_list=my_diary_object.user_entries, \
  104. data=request.json.get('entrydata', ""), \
  105. current_time="".join(str(NOW.day)+"/"+str(NOW.month)\
  106. +"/"+str(NOW.year)))
  107. entry_list = [entry for entry in \
  108. my_diary_object.user_entries.entry_list]
  109. for i in range(len(entry_list)):
  110. if new_entry.data == entry_list[i].data:
  111. return jsonify({'error!': "this entry already exists"})
  112. else:
  113. entry = {
  114. 'id': new_entry.entry_id,
  115. 'entrydata':new_entry.data,
  116. 'datecreated':new_entry.created
  117. }
  118. return jsonify({'entry': entry})
  119.  
  120. """ this route updates a single diary entry """
  121. @app.route('/home/api/v1/entries/<int:diary_entry_id>', \
  122. methods=['PUT'])
  123. def update_task(diary_entry_id):
  124. """ this method updates an entry's data """
  125. diary_entry_list = [entry for entry in \
  126. my_diary_object.user_entries.entry_list if \
  127. entry.entry_id == diary_entry_id]
  128. if len(diary_entry_list) == 0:
  129. abort(404)
  130. if not request.json:
  131. abort(400)
  132. if 'entrydata' in request.json and \
  133. type(request.json['entrydata']) is not unicode:
  134. abort(400)
  135. if 'date' in request.json and type(request.json['date']) is not str:
  136. abort(400)
  137. diary_entry_list[0].data = request.json.get('entrydata', "")
  138. entry = {'id': diary_entry_list[0].entry_id, \
  139. 'entrydata':diary_entry_list[0].data, \
  140. 'datecreated':diary_entry_list[0].created}
  141. return jsonify({'entry':entry})
  142.  
  143. """ this route deletes a diary entry """
  144. @app.route('/home/api/v1/entries/<int:diary_entry_id>', methods=['DELETE'])
  145. def delete_entry(diary_entry_id):
  146. """ this method deletes an entry """
  147. diary_entry_list = [entry for entry in \
  148. my_diary_object.user_entries.entry_list if \
  149. entry.entry_id == diary_entry_id]
  150. if diary_entry_list == []:
  151. abort(404)
  152. my_diary_object.user_entries.entry_list.remove(diary_entry_list[0])
  153. return jsonify({'result':True})
  154.  
  155. @app.errorhandler(404)
  156. def not_found(error):
  157. """ error handler gives more friendly errors """
  158. return make_response(jsonify({'error': 'Not found'}), 404)
  159.  
  160. @app.errorhandler(400)
  161. def bad_request(error):
  162. """ error handler gives more friendly errors """
  163. return make_response(jsonify({'error': 'Bad request, \
  164. please review your input data'}), 400)
  165.  
  166. my_diary_object = mydiary.MyDiary()
  167. gordonbalaaka = mydiary.User("Gordon Balaaka", \
  168. "balaakagordon@gmail.com", \
  169. "password", my_diary_object)
  170. seconduser = mydiary.User("Peter Crouch", \
  171. "petercrouch@gmail.com", "password", my_diary_object)
  172. jamesbond = mydiary.User("James Bond", "007.amesbond@gmail.com", \
  173. "bondjamesbond", my_diary_object)
  174. my_diary_object.login("balaakagordon@gmail.com", "password")
  175. entry1 = DiaryEntry(entry_list=my_diary_object.user_entries, \
  176. data='this is my first entry', \
  177. current_time="".join(str(NOW.day)+"/"\
  178. +str(NOW.month)+"/"+str(NOW.year)))
  179. entry2 = DiaryEntry(entry_list=my_diary_object.user_entries, \
  180. data='this is my second entry', \
  181. current_time="".join(str(NOW.day)+"/"\
  182. +str(NOW.month)+"/"+str(NOW.year)))
  183.  
  184.  
  185. if __name__ == '__main__':
  186. app.run(debug=True)
  187. cat: in: No such file or directory
  188. cat: terminal: No such file or directory
  189. (venv2) gordonbalaaka@Gordons-MacBook-Air.local:~/documents/andela/mydiary_gb$
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement