Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from flask import Flask, jsonify
- from flask import render_template
- from flask import request, session, redirect, url_for
- import db_interaction
- import time
- from pushpad_notifications import Notification
- from time_algorithm import Algorithm
- from jawbone import Jawbone
- import json_file
- import api_call
- import string
- app = Flask(__name__)
- app.secret_key='whoknows'
- @app.route('/', methods=['GET', 'POST'])
- def index():
- return render_template('index.html')
- '''if(session['user'] == ""):
- return render_template('index.html')
- else:
- print session['user']
- username = session['user']
- return render_template('index.html', user=username)'''
- @app.route('/logout')
- def logout():
- del session['user']
- session['user'] = ""
- return render_template('index.html', user = "") #redirect(url_for('index'))
- @app.route('/personal.html', methods=['GET', 'POST'])
- def personal():
- username = request.form['user']
- print username
- user = db_interaction.get_user_info(username)
- f = ["a","b", "c", "d"]
- i = 0
- for field in user:
- print field
- #f[i] = ''.join(field)
- f[i] = str(field)
- print str(field) + " --- " + str(f[i])
- i = i+1
- notif = Notification()
- uid=str(db_interaction.get_user_id(username))
- d=uid.replace('(', '')
- i=d.replace(')', '')
- id=i.replace(',', '')
- link = notif.get_subscribe_link(id)
- session['user'] = username
- session['password'] = f[1]
- session['email'] = f[2]
- session['id'] = f[3]
- session['link'] = link
- return render_template('personal.html', user=username, password=f[1], email=f[2], id=f[3], link=link)
- @app.route('/signup.html', methods=['GET', 'POST'])
- def signup():
- username = request.form['user']
- email = request.form['email']
- password = request.form['password']
- users_list = db_interaction.get_users() # retrieve user list from DataBase
- flag = 0
- for u in users_list:
- us = ''.join(u)
- # print us + " " + username
- if username == us:
- flag = 1
- break
- else:
- flag = 0
- if flag == 0: #check that the user isn't already in the database
- db_interaction.insert_user(username, password, email) #store users info
- time.sleep(1)
- #user = db_interaction.get_user_info(username)
- uid=str(db_interaction.get_user_id(username))
- d=uid.replace('(', '')
- i=d.replace(')', '')
- id=i.replace(',', '')
- #print id
- notif = Notification()
- link = notif.get_subscribe_link(id)
- session['user'] = username
- session['password'] = password
- session['email'] = email
- session['id'] = id
- session['link'] = link
- session['auth'] = ""
- return render_template('personal.html', user=username, password=password, email=email, id=id, link=link, auth="")
- else:
- return render_template('signup.html', user=username) # ideally it should print that the user is already present
- @app.route('/signin.html', methods=['GET', 'POST'])
- def signin():
- password = request.form['password']
- users_list = db_interaction.get_users() # retrieve user list from DataBase
- username = request.form['user']
- user = db_interaction.get_user_info(username)
- f = ["a","b", "c", "d"]
- i = 0
- for u in users_list:
- us = ''.join(u)
- #print us + " " + user
- if username == us:
- flag = 1
- break
- else:
- flag = 0
- if flag == 0: #check that the user isn't already in the database
- return render_template('index.html')
- else:
- pas = ''.join(db_interaction.get_userpass(username))
- if(password == pas):
- session['user']=username
- for field in user:
- if(i==3):
- id=field
- break
- else:
- #print field
- f[i] = ''.join(field)
- #print "ciao il mio casso: "+f[i]
- i = i+1
- notif = Notification()
- link = notif.get_subscribe_link(str(id))
- check_auth = db_interaction.get_auth(username)
- #print check_auth
- check_auth=''.join(check_auth)
- #print check_auth
- if(check_auth == 'N'):
- session['password'] = f[1]
- session['email'] = f[2]
- session['id'] = id
- session['link'] = link
- session['auth'] = ""
- return render_template('personal.html', user=username, password=f[1], email=f[2], id=id, link=link, auth="")
- else:
- session['password'] = f[1]
- session['email'] = f[2]
- session['id'] = id
- session['link'] = link
- session['auth'] = "authenticated"
- return render_template('personal.html', user=username, password=f[1], email=f[2], id=id, link=link, auth="authenticated")
- else:
- return render_template('signin.html')
- @app.route('/personal_page.html', methods= ['GET', 'POST'])
- def run_algorithm():
- #sleep_timestamp = ["00:15:52", "23:45:51", "00:19:29", "00:03:09", "00:17:17", "23:58:15", "22:55:50"]
- #wake_timestamp = ["07:15:26", "07:36:22", "08:01:11", "07:00:15", "06:56:15", "07:25:17", "07:07:07"]
- pattern = []
- sleep_timestamp = []
- wake_timestamp = []
- shour = []
- whour = []
- for i in range(0,6):
- shour = str(api_call.retrieve_asleep_time(i)).split(" ")
- whour = str(api_call.retrieve_awake_time(i)).split(" ")
- sleep_timestamp.append(shour[1])
- wake_timestamp.append(whour[1])
- print sleep_timestamp
- print wake_timestamp
- username = request.form['username']
- password = request.form['password']
- email = request.form['email']
- id = request.form['id']
- delay = request.form['delay']
- notif = Notification()
- link = notif.get_subscribe_link(id)
- if(delay==str(0)):
- pattern = get_sleep_pattern(sleep_timestamp, wake_timestamp, int(delay)*60)
- notif.send_sleep_notification(pattern[0],pattern[1], id)
- wakeH = pattern[1]
- sleepH = pattern[0]
- else:
- wakeH = request.form['wake']
- sleepH = request.form['sleep']
- alg = Algorithm(sleep_timestamp, wake_timestamp)
- sleepHsec = alg.timestamp_to_seconds(sleepH)
- wakeHsec = alg.timestamp_to_seconds(wakeH)
- sleepHsec = sleepHsec + int(delay)*60
- wakeHsec = wakeHsec + int(delay)*60
- sleepH = alg.seconds_to_timestamp(sleepHsec)
- wakeH = alg.seconds_to_timestamp(wakeHsec)
- notif.send_sleep_notification(sleepH,wakeH, id)
- session['user'] = username
- session['password'] = password
- session['email'] = email
- session['id'] = id
- session['link'] = link
- session['sleep'] = sleepH
- session['wake'] = wakeH
- return render_template('personal_page.html', user=username, password=password, email=email, id=id, link=link, sleep=sleepH, wake=wakeH)
- @app.route('/a/', methods=['GET', 'POST'])
- def pippo():
- print "debug 1"
- username = request.form['user']
- print username
- db_interaction.auth_user(username)
- print "debug eugenio"
- ur = jaw.auth()
- print "debug 2", ur
- return redirect(ur)
- @app.route('/auth.html')
- def auth():
- print "debug 3"
- code = request.args.get('code')
- json_token = jaw.access_token(code)
- #print json_token
- json_file.fprint_json(json_token, "data.json")
- #print "Error after printing json"
- session['auth'] = "authenticated"
- return render_template('personal.html', auth="authenticated")
- @app.route('/api/v1.0/users', methods=['POST'])
- def insert_user():
- add_request = request.json
- if (add_request is not None) and ('name' in add_request) and ('password' in add_request) and ('email' in add_request):
- name = add_request['name']
- password = add_request['password']
- email = add_request['email']
- db_interaction.insert_user(name, password, email)
- return 200
- return 403
- @app.route('/api/v1.0/tasks/<string:surname>', methods=['GET'])
- def get_user(username):
- user = db_interaction.get_userpass(basestring(username))
- if user is None:
- return 404
- return jsonify({'user': prepare_for_json(user)})
- def get_sleep_pattern(sleep, wake, delay):
- algorithm = Algorithm(sleep, wake)
- bed_h = algorithm.get_bed_hour(delay)
- wake_h = algorithm.get_wake_up_hour(delay)
- return bed_h, wake_h
- def prepare_for_json(item):
- user = dict()
- user['name'] = item[0]
- user['password'] = item[1]
- user['email'] = item[2]
- return user
- if __name__ == '__main__':
- #port = int(os.environ.get('PORT', 5000))
- ci = '9M902cfWAxM'
- cs = 'bfb1b959a26b2cf46a62c07a7b421338890c3e96'
- ru = 'http://127.0.0.1:5000/auth.html'
- s = 'sleep_read heartrate_read sleep_write generic_event_read move_read weight_read '
- global jaw
- jaw = Jawbone(client_id=ci, client_secret=cs, redirect_uri=ru, scope=s)
- app.run(debug = True) #run the server
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement