Advertisement
Guest User

s

a guest
Jun 29th, 2015
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.76 KB | None | 0 0
  1. #!flask/bin/python
  2. from flask import Flask, jsonify, json, request, make_response
  3. from flask_restful import Resource
  4. from flask.ext.sqlalchemy import SQLAlchemy
  5. from contextlib import closing
  6. import os, pysftp, getpass, paramiko, MySQLdb
  7. from sqlalchemy import *
  8. from sqlalchemy.ext.automap import automap_base
  9. from sqlalchemy.orm import Session, sessionmaker
  10. from sqlalchemy import create_engine
  11. from sqlalchemy.ext.declarative import declarative_base
  12. from werkzeug.security import generate_password_hash, check_password_hash
  13. from flask.ext.mail import Message, Mail
  14. app= Flask(__name__)
  15.  
  16.  
  17.  
  18. app.config['SQLACHEMY_DATABASE_URI'] = 'mysql://joanna:pass@localhost/adviser'
  19. Base =declarative_base()
  20. engine = create_engine('mysql://joanna:pass@localhost/adviser', echo=True)
  21. metadata= MetaData (bind=engine)
  22. db = MySQLdb.connect(host="localhost", port=3306, user="joanna", passwd="pass", db="adviser")
  23. #Adviser= Base.classes.userinfo
  24. #db= SQLAlchemy (app)
  25. app = Flask(__name__)
  26. app.config.update(
  27. DEBUG=True,
  28. #EMAIL SETTINGS
  29. MAIL_SERVER='smtp.gmail.com',
  30. MAIL_PORT=465,
  31. MAIL_USE_SSL=True,
  32. MAIL_USE_TLS= False,
  33. MAIL_USERNAME = 'scrippsapi@gmail.com',
  34. MAIL_PASSWORD = 'scrippsapi1'
  35. )
  36.  
  37. mail = Mail(app)
  38.  
  39.  
  40. class Userinfo(Base):
  41. __table__= Table ('userinfo', metadata, autoload= True)
  42.  
  43. def __init__(self, user, paswd, email):
  44. self.user=user
  45. self.paswd=paswd
  46. self.email=email
  47. cur=db.cursor()
  48.  
  49. Session= sessionmaker(bind =engine)
  50. session=Session()
  51. #me= Adviser('joanna', 'iloveme')
  52. #session.add(user='joanna', paswd= 'iloveme')
  53. #session.commit()
  54. #exists= False
  55. @app.route('/api/files', methods= ['GET']) #just for me to see
  56. def get_files():
  57. info= session.query(Userinfo).all()
  58. #print info;
  59. #print 'hi'
  60. json_info= []
  61. for infos in info:
  62. d= {'user': infos.user,
  63. 'pass': infos.paswd}
  64. json_info.append(d)
  65.  
  66. return jsonify(loginfo=json_info)
  67.  
  68. @app.route('/api/account', methods= ['POST'])
  69. def login():
  70. e= request.json ['email']
  71. u= request.json ['user']
  72. p= request.json ['pass']
  73. cur.execute ("""SELECT * FROM userinfo WHERE user= %s""", (str(u),))
  74. rc=cur.rowcount
  75. if (rc>0):
  76. obj=cur.fetchone()
  77. #print obj
  78. if(check_password_hash (obj [2], str(p))):
  79. #global exists=True
  80. return 'user verified'
  81. else:
  82. return 'wrong password'
  83. else:
  84. hashedp= generate_password_hash(str(p))
  85. d= Userinfo(
  86. u,
  87. hashedp,
  88. e
  89. )
  90.  
  91.  
  92. msg= Message("Your password", sender= 'scrippsapi@gmail.com',recipients = ['joanna.li.stem@gmail.com'])
  93. msg.body= 'Your password is ' + hashedp
  94. #msg.html ='<b> password </b>'
  95. mail.send(msg)
  96. session.add(d)
  97. session.commit()
  98. return 'Your new password has been sent through email'
  99.  
  100.  
  101. @app.route('/api/files', methods = ['POST']) #stores the credentials in my db and also uploads the file of choice to my garibaldi
  102. def new_info():
  103. if not request.json or not 'user' in request.json:
  104. abort(400)
  105. u= request.json ['user']
  106. p= request.json ['pass']
  107. fname= (str)(request.json ['path'])
  108. s = pysftp.Connection('garibaldi.scripps.edu',username=str(u),password=str(p))
  109.  
  110. s.put(fname,'/gpfs/home/joannali/test.txt')
  111. s.close()
  112. d= Userinfo(
  113. #'path': request.json ['path'],
  114. u,
  115. p
  116. #"id" : files[-1]['id'] + 1,
  117.  
  118. )
  119. session.add(d)
  120. session.commit()
  121.  
  122. return 'Done'
  123.  
  124.  
  125. @app.errorhandler(404)
  126. def not_found(error):
  127. return make_response(jsonify(error=404, text= 'Not found')), 404
  128.  
  129. if __name__=='__main__':
  130. app.run(debug=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement