Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!flask/bin/python
- from flask import Flask, jsonify, json, request, make_response
- from flask_restful import Resource
- from flask.ext.sqlalchemy import SQLAlchemy
- from contextlib import closing
- import os, pysftp, getpass, paramiko, MySQLdb
- from sqlalchemy import *
- from sqlalchemy.ext.automap import automap_base
- from sqlalchemy.orm import Session, sessionmaker
- from sqlalchemy import create_engine
- from sqlalchemy.ext.declarative import declarative_base
- from werkzeug.security import generate_password_hash, check_password_hash
- from flask.ext.mail import Message, Mail
- app= Flask(__name__)
- app.config['SQLACHEMY_DATABASE_URI'] = 'mysql://joanna:pass@localhost/adviser'
- Base =declarative_base()
- engine = create_engine('mysql://joanna:pass@localhost/adviser', echo=True)
- metadata= MetaData (bind=engine)
- db = MySQLdb.connect(host="localhost", port=3306, user="joanna", passwd="pass", db="adviser")
- #Adviser= Base.classes.userinfo
- #db= SQLAlchemy (app)
- app = Flask(__name__)
- app.config.update(
- DEBUG=True,
- #EMAIL SETTINGS
- MAIL_SERVER='smtp.gmail.com',
- MAIL_PORT=465,
- MAIL_USE_SSL=True,
- MAIL_USE_TLS= False,
- MAIL_USERNAME = 'scrippsapi@gmail.com',
- MAIL_PASSWORD = 'scrippsapi1'
- )
- mail = Mail(app)
- class Userinfo(Base):
- __table__= Table ('userinfo', metadata, autoload= True)
- def __init__(self, user, paswd, email):
- self.user=user
- self.paswd=paswd
- self.email=email
- cur=db.cursor()
- Session= sessionmaker(bind =engine)
- session=Session()
- #me= Adviser('joanna', 'iloveme')
- #session.add(user='joanna', paswd= 'iloveme')
- #session.commit()
- #exists= False
- @app.route('/api/files', methods= ['GET']) #just for me to see
- def get_files():
- info= session.query(Userinfo).all()
- #print info;
- #print 'hi'
- json_info= []
- for infos in info:
- d= {'user': infos.user,
- 'pass': infos.paswd}
- json_info.append(d)
- return jsonify(loginfo=json_info)
- @app.route('/api/account', methods= ['POST'])
- def login():
- e= request.json ['email']
- u= request.json ['user']
- p= request.json ['pass']
- cur.execute ("""SELECT * FROM userinfo WHERE user= %s""", (str(u),))
- rc=cur.rowcount
- if (rc>0):
- obj=cur.fetchone()
- #print obj
- if(check_password_hash (obj [2], str(p))):
- #global exists=True
- return 'user verified'
- else:
- return 'wrong password'
- else:
- hashedp= generate_password_hash(str(p))
- d= Userinfo(
- u,
- hashedp,
- e
- )
- msg= Message("Your password", sender= 'scrippsapi@gmail.com',recipients = ['joanna.li.stem@gmail.com'])
- msg.body= 'Your password is ' + hashedp
- #msg.html ='<b> password </b>'
- mail.send(msg)
- session.add(d)
- session.commit()
- return 'Your new password has been sent through email'
- @app.route('/api/files', methods = ['POST']) #stores the credentials in my db and also uploads the file of choice to my garibaldi
- def new_info():
- if not request.json or not 'user' in request.json:
- abort(400)
- u= request.json ['user']
- p= request.json ['pass']
- fname= (str)(request.json ['path'])
- s = pysftp.Connection('garibaldi.scripps.edu',username=str(u),password=str(p))
- s.put(fname,'/gpfs/home/joannali/test.txt')
- s.close()
- d= Userinfo(
- #'path': request.json ['path'],
- u,
- p
- #"id" : files[-1]['id'] + 1,
- )
- session.add(d)
- session.commit()
- return 'Done'
- @app.errorhandler(404)
- def not_found(error):
- return make_response(jsonify(error=404, text= 'Not found')), 404
- if __name__=='__main__':
- app.run(debug=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement