Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- app = Flask(__name__)
- babel = Babel(app)
- app.config['TRYTON_DATABASE'] = os.environ.get('DB_NAME', 'tryton')
- tryton = Tryton(app, configure_jinja=True)
- WebUser = tryton.pool.get('web.user')
- Session = tryton.pool.get('web.user.session')
- def login_required(func):
- @wraps(func)
- def wrapper(*args, **kwargs):
- session_key = None
- if 'session_key' in session:
- session_key = session['session_key']
- user = Session.get_user(session_key)
- if not user:
- return redirect(url_for('login', next=request.path))
- return func(*args, **kwargs)
- return wrapper
- class LoginForm(FlaskForm):
- email = StringField('Correo Electrónico',
- validators=[DataRequired()],
- render_kw={'placeholder': 'Correo Electrónico'})
- password = PasswordField('Contraseña',
- validators=[DataRequired()],
- render_kw={'placeholder': 'Contraseña'})
- @app.route('/login', methods=['GET', 'POST'])
- @tryton.transaction()
- def login():
- form = LoginForm()
- if request.method == 'POST' and form.validate_on_submit():
- user = WebUser.authenticate(form.email.data, form.password.data)
- if user:
- session['session_key'] = WebUser.new_session(user)
- flash('Ahora estas identificado.', 'success')
- return redirect(request.form.get('next', url_for('index')))
- flash('Email o contraseña incorrectos.', 'error')
- return render_template(
- 'login.html',
- form=form,
- next=request.args.get('next'))
- @app.route('/logout')
- @tryton.transaction(readonly=False)
- @login_required
- def logout():
- if session['session_key']:
- Session.delete(Session.search(
- ('key', '=', session['session_key']),
- ))
- session.pop('session_key', None)
- flash("Se ha desconectado tu sessión", 'success')
- return redirect(url_for('index'))
- @app.route('/')
- @tryton.transaction()
- def index():
- return render_template('index.html')
- @app.route('/my-account')
- @tryton.transaction()
- @login_required
- def account():
- return render_template('account.html')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement