Advertisement
Guest User

Untitled

a guest
Feb 2nd, 2021
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.78 KB | None | 0 0
  1. from flask import Flask, render_template, redirect, url_for, request, flash
  2. from flask_tryton import Tryton
  3. from flask_login import (LoginManager, login_required, logout_user, login_user,
  4.     current_user)
  5.  
  6. app = Flask(__name__)
  7. app.config['TRYTON_CONFIG'] = '/srv/tryton/5.8/.trytond.conf'
  8. app.config['TRYTON_DATABASE'] = 'tryton_fusion'
  9. app.config['SECRET_KEY'] = '7d441f27d441f27567d441f2b6134a'
  10. tryton = Tryton(app)
  11. login_manager = LoginManager()
  12. login_manager.login_view = 'login'
  13. login_manager.init_app(app)
  14.  
  15. User = tryton.pool.get('res.user')
  16. WebUser = tryton.pool.get('web.user')
  17.  
  18.  
  19. class WebUser(WebUser):
  20.     __name__ = 'web.user'
  21.  
  22.     @property
  23.     def is_authenticated(self):
  24.         return True
  25.  
  26.     @property
  27.     def is_anonymous(self):
  28.         return False
  29.  
  30.     @property
  31.     def is_active(self):
  32.         return True
  33.  
  34.     def get_id(self):
  35.         return str(self.id)
  36.  
  37.  
  38. @login_manager.user_loader
  39. @tryton.transaction()
  40. def load_user(user_id):
  41.     return WebUser(int(user_id))
  42.  
  43.  
  44. @tryton.default_context
  45. def default_context():
  46.     return User.get_preferences(context_only=True)
  47.  
  48.  
  49. @app.route('/')
  50. def index():
  51.     return render_template('index.html')
  52.  
  53.  
  54. @app.route('/profile')
  55. @login_required
  56. @tryton.transaction()
  57. def profile():
  58.     print('current_user ' + str(current_user))
  59.     # got error here when rendering template
  60.     return render_template('profile.html', email=current_user.email)
  61.  
  62.  
  63. @app.route('/login')
  64. def login():
  65.     return render_template('login.html')
  66.  
  67.  
  68. @app.route('/login', methods=['POST'])
  69. @tryton.transaction()
  70. def login_post():
  71.     email = request.form.get('email')
  72.     password = request.form.get('password')
  73.     remember = True if request.form.get('remember') else False
  74.  
  75.     user = WebUser.authenticate(email, password)
  76.     if not user:
  77.         flash('Please check your login details and try again.')
  78.         return redirect(url_for('login'))
  79.  
  80.     login_user(user, remember=remember, force=True)
  81.     return redirect(url_for('profile'))
  82.  
  83.  
  84. @app.route('/signup')
  85. def signup():
  86.     return render_template('signup.html')
  87.  
  88.  
  89. @app.route('/signup', methods=['POST'])
  90. @tryton.transaction()
  91. def signup_post():
  92.     email = request.form.get('email')
  93.     password = request.form.get('password')
  94.     # check user with tryton web-user
  95.     user = WebUser.authenticate(email, password)
  96.  
  97.     if user:
  98.         flash('Email address already exists')
  99.         return redirect(url_for('signup'))
  100.     # create new user with web_user
  101.     user = WebUser()
  102.     user.email = email
  103.     user.password = password
  104.     user.save()
  105.     return redirect(url_for('login'))
  106.  
  107.  
  108. @app.route('/logout')
  109. @login_required
  110. def logout():
  111.     logout_user()
  112.     return redirect(url_for('index'))
  113.  
  114.  
  115. if __name__ == '__main__':
  116.     app.run(host='0.0.0.0')
  117.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement