Advertisement
Guest User

Untitled

a guest
May 10th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  1. from flask import (Flask, g, render_template, flash, redirect, url_for,
  2. abort)
  3. from flask.ext.bcrypt import check_password_hash
  4. from flask.ext.login import (LoginManager, login_user, logout_user,
  5. login_required, current_user)
  6. from flask_mail import Message, Mail
  7. from itsdangerous import URLSafeTimedSerializer, BadSignature, SignatureExpired
  8.  
  9. import forms
  10. import models
  11.  
  12.  
  13. app = Flask(__name__)
  14. mail = Mail(app)
  15.  
  16. app.config.from_object('config.BaseConfig')
  17.  
  18.  
  19. def generate_serializer(secret_key=None):
  20. return URLSafeTimedSerializer(app.config['SECRET_KEY'])
  21.  
  22.  
  23. def generate_activation_url(user):
  24. serializer = generate_serializer()
  25. token = serializer.dumps(user.username)
  26. return url_for('activate_user', token=token, _external=True)
  27.  
  28.  
  29. @app.before_request
  30. def before_request():
  31. """Connect to the database before each request."""
  32. try:
  33. g.db = models.db
  34. g.db.connect()
  35. g.user = current_user
  36. except models.OperationalError:
  37. pass
  38.  
  39.  
  40. @app.after_request
  41. def after_request(response):
  42. """Close the database connection after each request."""
  43. g.db.close()
  44. return response
  45.  
  46.  
  47. @app.route('/', methods=('GET', 'POST'))
  48. def index():
  49. form = forms.RegisterForm()
  50. if form.validate_on_submit():
  51. models.User.create_user(
  52. username=form.username.data,
  53. email=form.email.data,
  54. password=form.password.data,
  55. confirmed=False
  56. )
  57. token = generate_activation_url(models.User)
  58. msg = Message(render_template('activation_email.html', token=token),
  59. recipients=[models.User.email])
  60. mail.send(msg)
  61.  
  62. return render_template('activate.html', user=models.User)
  63. return render_template('index.html', form=form)
  64.  
  65.  
  66. @app.route('/activate/<token>')
  67. def activate_user(token, expiration=3600):
  68. serializer = generate_serializer()
  69. try:
  70. user_id = serializer.loads(token, salt=app.config[
  71. 'SECRET_KEY'], max_age=expiration)
  72. except (BadSignature, SignatureExpired):
  73. abort(404)
  74.  
  75. models.User.confirmed = True
  76. flash('User activated')
  77. return redirect(url_for('index'))
  78.  
  79.  
  80. if __name__ == '__main__':
  81. models.init()
  82. app.run(debug=True, host='localhost', port=8000)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement