from flask import Flask, jsonify, render_template, request, json, redirect, url_for #from libsmscast import LibSMSCast from mocksmscast import LibSMSCast from libaddrbook import LibAddrBook from flask.ext.login import login_user, logout_user, current_user, login_required, LoginManager import user import dbmsgs app = Flask(__name__) app.secret_key = 'abcdgfkfdhgslkjh' # lol login_manager = LoginManager() login_manager.init_app(app) login_manager.login_view = "login" @app.route('/send') @login_required def send(): client = LibSMSCast() addr = LibAddrBook() msg = request.args.get('msg') tostr = request.args.get('to') to = [int(x) for x in json.loads(tostr)] print to dbmsgs.logmsg(msg, to, current_user.uid) dest = addr.get_nums_with_ids(to) print dest howmany = len(dest) client.send(dest, msg) return jsonify(result="sent {} to {} numbers(s)".format(msg, howmany)) @app.route('/_get_updates') @login_required def get_updates(): lastOut = request.args.get('lastOut') if not lastOut: lastOut = 0 lastIn = request.args.get('lastIn') if not lastIn: lastIn = 0 return jsonify(msgs=dbmsgs.getloggedmsgs(lastOut), inbound=dbmsgs.getinboundmsgs(lastIn)) @app.route('/_get_people_in_groups') @login_required def get_people_in_groups(): addr = LibAddrBook() groupliststr = request.args.get('grouplist') grouplist = [int(x) for x in json.loads(groupliststr)] ppl = addr.get_people_in_groups(grouplist) return jsonify(result=ppl) @app.route('/_get_people') @login_required def get_people(): addr = LibAddrBook() people = addr.get_everyone() return jsonify(people=people) @app.route('/_get_groups') @login_required def get_groups(): addr = LibAddrBook() groups = addr.get_groups() return jsonify(groups=groups) @app.route('/addperson', methods=["GET","POST"]) @login_required def add_person(): statustext = "" if request.method == "POST": addr = LibAddrBook() name = request.form['name'] num = request.form['num'] state = addr.add_person(name, num) if not state: # failure statustext = "Failed to add person {}".format(name) else: # success statustext = "Successfully added person {}".format(name) return render_template('addperson.html', statustext=statustext) @app.route('/') @login_required def index(): return render_template('index.html') @app.route("/_twilio_new_sms", methods=["POST"]) def twilio_new_sms(): if request.method == "POST": dbmsgs.loginboundmsg(request.form) return "(y)" #print request.form; return "(n)" @app.route("/login", methods=["GET", "POST"]) def login(): if current_user.is_authenticated() and current_user.is_active(): return redirect(url_for('index')) if request.method == "POST": username = request.form['username'] password = request.form['password'] if(username and password): # do login because username and password have been specified uid = user.authenticate(username, password) if uid != None: login_user(user.get(uid), remember=True) return redirect(url_for('index')) return render_template('login.html') @app.route("/logout") def logout(): logout_user() return redirect(url_for('login')) @login_manager.user_loader def load_user(userid): return user.get(userid) if __name__ == '__main__': app.run(host='0.0.0.0', port=42069, debug=True) #app.run(host='10.9.8.1', port=42069, debug=True)