Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from flask import (Flask, g, render_template, flash, redirect, url_for,
- abort)
- from flask.ext.bcrypt import check_password_hash
- from flask.ext.login import (LoginManager, login_user, logout_user,
- login_required, current_user)
- from flask_mail import Message
- from itsdangerous import URLSafeTimedSerializer, BadSignature
- import forms
- import models
- app = Flask(__name__)
- app.config.from_object('config.BaseConfig')
- def generate_serializer(secret_key=None):
- if secret_key is None:
- secret_key = app.config['SECRET_KEY']
- return URLSafeTimedSerializer(secret_key)
- def generate_activation_url(user):
- serializer = generate_serializer()
- token = serializer.dumps(user.id)
- return url_for('activate_user', token=token, _external=True)
- @app.before_request
- def before_request():
- """Connect to the database before each request."""
- try:
- g.db = models.db
- g.db.connect()
- g.user = current_user
- except models.OperationalError:
- pass
- @app.after_request
- def after_request(response):
- """Close the database connection after each request."""
- g.db.close()
- return response
- @app.route('/activate/<token>')
- def activate_user(token, expiration=3600):
- serializer = generate_serializer()
- try:
- user_id = serializer.loads(token, max_age=expiration)
- except BadSignature:
- abort(404)
- user = models.User.query.get_or_404(user_id)
- user.confirmed = True
- flash('User activated')
- return redirect(url_for('index'))
- @app.route('/', methods=('GET', 'POST'))
- def index():
- form = forms.RegisterForm()
- if form.validate_on_submit():
- models.User.create_user(
- username=form.username.data,
- email=form.email.data,
- password=form.password.data,
- confirmed=False
- )
- token = generate_activation_url(models.User)
- Message(render_template('activation_email.html', token=token),
- recipients=[models.User.email])
- return render_template('activate.html', user=models.User)
- return render_template('index.html', form=form)
- if __name__ == '__main__':
- models.init()
- app.run(debug=True, host='localhost', port=8000)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement