Advertisement
Guest User

Untitled

a guest
Nov 24th, 2020
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.35 KB | None | 0 0
  1. app = Flask(__name__)      
  2. babel = Babel(app)                                                            
  3. app.config['TRYTON_DATABASE'] = os.environ.get('DB_NAME', 'tryton')
  4. tryton = Tryton(app, configure_jinja=True)  
  5.  
  6. WebUser = tryton.pool.get('web.user')                                          
  7. Session = tryton.pool.get('web.user.session')                                                                                
  8.                                                                                
  9. def login_required(func):                                                      
  10.     @wraps(func)                                                              
  11.     def wrapper(*args, **kwargs):                                              
  12.         session_key = None                                                    
  13.         if 'session_key' in session:                                          
  14.             session_key = session['session_key']                              
  15.         user = Session.get_user(session_key)                                  
  16.         if not user:                                                          
  17.             return redirect(url_for('login', next=request.path))              
  18.         return func(*args, **kwargs)                                          
  19.     return wrapper                                                            
  20.                                                                                
  21.                                                                                
  22. class LoginForm(FlaskForm):                                                    
  23.     email = StringField('Correo Electrónico',                                  
  24.         validators=[DataRequired()],                                          
  25.         render_kw={'placeholder': 'Correo Electrónico'})                      
  26.     password = PasswordField('Contraseña',                                    
  27.         validators=[DataRequired()],                                          
  28.         render_kw={'placeholder': 'Contraseña'})                              
  29.                                                                                
  30.                                                                                
  31. @app.route('/login', methods=['GET', 'POST'])                                  
  32. @tryton.transaction()                                                          
  33. def login():                                                                  
  34.     form = LoginForm()                                                        
  35.     if request.method == 'POST' and form.validate_on_submit():                
  36.         user = WebUser.authenticate(form.email.data, form.password.data)      
  37.         if user:                                                              
  38.             session['session_key'] = WebUser.new_session(user)                
  39.             flash('Ahora estas identificado.', 'success')                      
  40.             return redirect(request.form.get('next', url_for('index')))        
  41.         flash('Email o contraseña incorrectos.', 'error')                      
  42.     return render_template(                                                    
  43.         'login.html',                                                          
  44.         form=form,                                                            
  45.         next=request.args.get('next'))                                        
  46.                                                                                
  47.                                                                                
  48. @app.route('/logout')                                                          
  49. @tryton.transaction(readonly=False)                                            
  50. @login_required                                                                
  51. def logout():                                                                  
  52.     if session['session_key']:                                                
  53.         Session.delete(Session.search(                                        
  54.                 ('key', '=', session['session_key']),                          
  55.                 ))                                                            
  56.         session.pop('session_key', None)                                      
  57.         flash("Se ha desconectado tu sessión", 'success')                      
  58.     return redirect(url_for('index'))
  59.                                                                  
  60. @app.route('/')                                                                
  61. @tryton.transaction()                                                          
  62. def index():                                                                  
  63.     return render_template('index.html')    
  64.                                                                                                                                    
  65. @app.route('/my-account')                                                      
  66. @tryton.transaction()                                                          
  67. @login_required                                                                
  68. def account():                                                                
  69.     return render_template('account.html')                                          
  70.                                        
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement