Advertisement
Guest User

Untitled

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