Advertisement
Guest User

WebApp

a guest
Jul 16th, 2016
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.22 KB | None | 0 0
  1. from flask import Flask, jsonify
  2. from flask import render_template
  3. from flask import request, session, redirect, url_for
  4. import db_interaction
  5. import time
  6. from pushpad_notifications import Notification
  7. from time_algorithm import Algorithm
  8. from jawbone import Jawbone
  9. import json_file
  10. import api_call
  11. import string
  12.  
  13. app = Flask(__name__)
  14. app.secret_key='whoknows'
  15.  
  16. @app.route('/', methods=['GET', 'POST'])
  17. def index():
  18. return render_template('index.html')
  19. '''if(session['user'] == ""):
  20. return render_template('index.html')
  21. else:
  22. print session['user']
  23. username = session['user']
  24. return render_template('index.html', user=username)'''
  25.  
  26. @app.route('/logout')
  27. def logout():
  28. del session['user']
  29. session['user'] = ""
  30. return render_template('index.html', user = "") #redirect(url_for('index'))
  31.  
  32. @app.route('/personal.html', methods=['GET', 'POST'])
  33. def personal():
  34. username = request.form['user']
  35. print username
  36. user = db_interaction.get_user_info(username)
  37. f = ["a","b", "c", "d"]
  38. i = 0
  39.  
  40. for field in user:
  41. print field
  42. #f[i] = ''.join(field)
  43. f[i] = str(field)
  44. print str(field) + " --- " + str(f[i])
  45. i = i+1
  46.  
  47. notif = Notification()
  48. uid=str(db_interaction.get_user_id(username))
  49. d=uid.replace('(', '')
  50. i=d.replace(')', '')
  51. id=i.replace(',', '')
  52. link = notif.get_subscribe_link(id)
  53. session['user'] = username
  54. session['password'] = f[1]
  55. session['email'] = f[2]
  56. session['id'] = f[3]
  57. session['link'] = link
  58.  
  59. return render_template('personal.html', user=username, password=f[1], email=f[2], id=f[3], link=link)
  60.  
  61. @app.route('/signup.html', methods=['GET', 'POST'])
  62. def signup():
  63. username = request.form['user']
  64. email = request.form['email']
  65. password = request.form['password']
  66. users_list = db_interaction.get_users() # retrieve user list from DataBase
  67. flag = 0
  68. for u in users_list:
  69. us = ''.join(u)
  70. # print us + " " + username
  71. if username == us:
  72. flag = 1
  73. break
  74. else:
  75. flag = 0
  76.  
  77. if flag == 0: #check that the user isn't already in the database
  78. db_interaction.insert_user(username, password, email) #store users info
  79. time.sleep(1)
  80. #user = db_interaction.get_user_info(username)
  81. uid=str(db_interaction.get_user_id(username))
  82. d=uid.replace('(', '')
  83. i=d.replace(')', '')
  84. id=i.replace(',', '')
  85. #print id
  86. notif = Notification()
  87. link = notif.get_subscribe_link(id)
  88. session['user'] = username
  89. session['password'] = password
  90. session['email'] = email
  91. session['id'] = id
  92. session['link'] = link
  93. session['auth'] = ""
  94. return render_template('personal.html', user=username, password=password, email=email, id=id, link=link, auth="")
  95. else:
  96. return render_template('signup.html', user=username) # ideally it should print that the user is already present
  97.  
  98. @app.route('/signin.html', methods=['GET', 'POST'])
  99. def signin():
  100. password = request.form['password']
  101. users_list = db_interaction.get_users() # retrieve user list from DataBase
  102. username = request.form['user']
  103. user = db_interaction.get_user_info(username)
  104. f = ["a","b", "c", "d"]
  105. i = 0
  106. for u in users_list:
  107. us = ''.join(u)
  108. #print us + " " + user
  109. if username == us:
  110. flag = 1
  111. break
  112. else:
  113. flag = 0
  114.  
  115. if flag == 0: #check that the user isn't already in the database
  116. return render_template('index.html')
  117. else:
  118. pas = ''.join(db_interaction.get_userpass(username))
  119. if(password == pas):
  120. session['user']=username
  121. for field in user:
  122. if(i==3):
  123. id=field
  124. break
  125. else:
  126. #print field
  127. f[i] = ''.join(field)
  128. #print "ciao il mio casso: "+f[i]
  129. i = i+1
  130. notif = Notification()
  131. link = notif.get_subscribe_link(str(id))
  132. check_auth = db_interaction.get_auth(username)
  133. #print check_auth
  134. check_auth=''.join(check_auth)
  135. #print check_auth
  136. if(check_auth == 'N'):
  137. session['password'] = f[1]
  138. session['email'] = f[2]
  139. session['id'] = id
  140. session['link'] = link
  141. session['auth'] = ""
  142. return render_template('personal.html', user=username, password=f[1], email=f[2], id=id, link=link, auth="")
  143. else:
  144. session['password'] = f[1]
  145. session['email'] = f[2]
  146. session['id'] = id
  147. session['link'] = link
  148. session['auth'] = "authenticated"
  149. return render_template('personal.html', user=username, password=f[1], email=f[2], id=id, link=link, auth="authenticated")
  150.  
  151. else:
  152. return render_template('signin.html')
  153.  
  154. @app.route('/personal_page.html', methods= ['GET', 'POST'])
  155. def run_algorithm():
  156.  
  157. #sleep_timestamp = ["00:15:52", "23:45:51", "00:19:29", "00:03:09", "00:17:17", "23:58:15", "22:55:50"]
  158. #wake_timestamp = ["07:15:26", "07:36:22", "08:01:11", "07:00:15", "06:56:15", "07:25:17", "07:07:07"]
  159. pattern = []
  160. sleep_timestamp = []
  161. wake_timestamp = []
  162. shour = []
  163. whour = []
  164. for i in range(0,6):
  165. shour = str(api_call.retrieve_asleep_time(i)).split(" ")
  166. whour = str(api_call.retrieve_awake_time(i)).split(" ")
  167. sleep_timestamp.append(shour[1])
  168. wake_timestamp.append(whour[1])
  169.  
  170. print sleep_timestamp
  171. print wake_timestamp
  172. username = request.form['username']
  173. password = request.form['password']
  174. email = request.form['email']
  175. id = request.form['id']
  176. delay = request.form['delay']
  177. notif = Notification()
  178. link = notif.get_subscribe_link(id)
  179. if(delay==str(0)):
  180. pattern = get_sleep_pattern(sleep_timestamp, wake_timestamp, int(delay)*60)
  181. notif.send_sleep_notification(pattern[0],pattern[1], id)
  182. wakeH = pattern[1]
  183. sleepH = pattern[0]
  184. else:
  185.  
  186. wakeH = request.form['wake']
  187. sleepH = request.form['sleep']
  188. alg = Algorithm(sleep_timestamp, wake_timestamp)
  189. sleepHsec = alg.timestamp_to_seconds(sleepH)
  190. wakeHsec = alg.timestamp_to_seconds(wakeH)
  191. sleepHsec = sleepHsec + int(delay)*60
  192. wakeHsec = wakeHsec + int(delay)*60
  193. sleepH = alg.seconds_to_timestamp(sleepHsec)
  194. wakeH = alg.seconds_to_timestamp(wakeHsec)
  195. notif.send_sleep_notification(sleepH,wakeH, id)
  196.  
  197. session['user'] = username
  198. session['password'] = password
  199. session['email'] = email
  200. session['id'] = id
  201. session['link'] = link
  202. session['sleep'] = sleepH
  203. session['wake'] = wakeH
  204. return render_template('personal_page.html', user=username, password=password, email=email, id=id, link=link, sleep=sleepH, wake=wakeH)
  205.  
  206. @app.route('/a/', methods=['GET', 'POST'])
  207. def pippo():
  208. print "debug 1"
  209. username = request.form['user']
  210. print username
  211. db_interaction.auth_user(username)
  212. print "debug eugenio"
  213. ur = jaw.auth()
  214. print "debug 2", ur
  215. return redirect(ur)
  216.  
  217.  
  218. @app.route('/auth.html')
  219. def auth():
  220. print "debug 3"
  221. code = request.args.get('code')
  222. json_token = jaw.access_token(code)
  223. #print json_token
  224. json_file.fprint_json(json_token, "data.json")
  225. #print "Error after printing json"
  226. session['auth'] = "authenticated"
  227. return render_template('personal.html', auth="authenticated")
  228.  
  229. @app.route('/api/v1.0/users', methods=['POST'])
  230. def insert_user():
  231. add_request = request.json
  232.  
  233. if (add_request is not None) and ('name' in add_request) and ('password' in add_request) and ('email' in add_request):
  234. name = add_request['name']
  235. password = add_request['password']
  236. email = add_request['email']
  237.  
  238. db_interaction.insert_user(name, password, email)
  239.  
  240. return 200
  241.  
  242. return 403
  243.  
  244. @app.route('/api/v1.0/tasks/<string:surname>', methods=['GET'])
  245. def get_user(username):
  246. user = db_interaction.get_userpass(basestring(username))
  247.  
  248. if user is None:
  249. return 404
  250.  
  251. return jsonify({'user': prepare_for_json(user)})
  252.  
  253.  
  254. def get_sleep_pattern(sleep, wake, delay):
  255. algorithm = Algorithm(sleep, wake)
  256. bed_h = algorithm.get_bed_hour(delay)
  257. wake_h = algorithm.get_wake_up_hour(delay)
  258.  
  259. return bed_h, wake_h
  260.  
  261.  
  262. def prepare_for_json(item):
  263.  
  264. user = dict()
  265. user['name'] = item[0]
  266. user['password'] = item[1]
  267. user['email'] = item[2]
  268. return user
  269.  
  270. if __name__ == '__main__':
  271. #port = int(os.environ.get('PORT', 5000))
  272. ci = '9M902cfWAxM'
  273. cs = 'bfb1b959a26b2cf46a62c07a7b421338890c3e96'
  274. ru = 'http://127.0.0.1:5000/auth.html'
  275. s = 'sleep_read heartrate_read sleep_write generic_event_read move_read weight_read '
  276.  
  277. global jaw
  278. jaw = Jawbone(client_id=ci, client_secret=cs, redirect_uri=ru, scope=s)
  279. app.run(debug = True) #run the server
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement