Advertisement
Guest User

Untitled

a guest
Jun 19th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.02 KB | None | 0 0
  1. from flask import (Flask, g, render_template, flash, redirect, url_for)
  2. from flask_bcrypt import check_password_hash
  3. from flask_login import LoginManager, login_user, logout_user, login_required, current_user
  4. import re
  5. import forms
  6. import models
  7.  
  8. DEBUG = True
  9. PORT = 5000
  10. HOST = '0.0.0.0'
  11.  
  12. app = Flask(__name__)
  13. app.secret_key = '$2b$12$BZX4tFhtCQXG/sBbdIBQde4nymd75T1g4cxGZBXiMiGj0hEfTpu/i'
  14.  
  15. login_manager = LoginManager()
  16. login_manager.init_app(app)
  17. login_manager.login_view = 'login'
  18.  
  19.  
  20. @login_manager.user_loader
  21. def load_user(userid):
  22. try:
  23. return models.User.get(models.User.id == userid)
  24. except models.DoesNotExist:
  25. return None
  26.  
  27.  
  28. @app.before_request
  29. def before_request():
  30. """Connect to the database before each request."""
  31.  
  32. g.db = models.DATABASE
  33. g.db.connect()
  34. g.user = current_user
  35.  
  36.  
  37. @app.after_request
  38. def after_request(response):
  39. """Close the database connection after each request."""
  40. g.db.close()
  41. return response
  42.  
  43.  
  44. @app.route('/')
  45. def index():
  46. if not current_user.is_authenticated:
  47. return render_template('welcome.html')
  48. else:
  49. stream = models.Post.select().limit(100)
  50. return render_template('stream.html', stream=stream)
  51.  
  52.  
  53. @app.route('/stream')
  54. @app.route('/stream/<username>')
  55. def stream(username=None):
  56. template = 'stream.html'
  57.  
  58. if username and username != current_user.username:
  59. user = models.User.select().where(models.User.username ** username).get()
  60. stream = user.posts.limit(100)
  61. else:
  62. stream = current_user.get_stream().limit(100)
  63. user = current_user
  64. if username:
  65. template = 'user_stream.html'
  66. return render_template(template, stream=stream, user=user)
  67.  
  68.  
  69. @app.route('/register', methods=('GET', 'POST'))
  70. def register():
  71. form = forms.RegisterForm()
  72. if form.validate_on_submit():
  73. flash("You register!", 'success')
  74. models.User.create_user(
  75. username=form.username.data,
  76. email=form.email.data,
  77. password=form.password.data
  78. )
  79. return redirect(url_for('index'))
  80. else:
  81. return render_template('register.html', form=form)
  82.  
  83.  
  84. @app.route('/login', methods=('GET', 'POST'))
  85. def login():
  86. form = forms.LoginForm()
  87. if form.validate_on_submit():
  88. try:
  89. if validateEmail(form.email.data):
  90. user = models.User.get(models.User.email == form.email.data)
  91. else:
  92. user = models.User.get(models.User.username == form.email.data)
  93. except models.DoesNotExist:
  94. flash("Your email/username or password doesn't match.", "error")
  95. else:
  96. if check_password_hash(user.password, form.password.data):
  97. login_user(user)
  98. flash("You've been logged in!", 'success')
  99. return redirect(url_for('index'))
  100. else:
  101. flash("Your email/username or password doesn't match.", "error")
  102.  
  103. return render_template('login.html', form=form)
  104.  
  105.  
  106. @app.route('/logout')
  107. @login_required
  108. def logout():
  109. logout_user()
  110. flash("You've been logged out.", 'success')
  111. return redirect(url_for('index'))
  112.  
  113.  
  114. @app.route('/new_post', methods=('GET', 'POST'))
  115. @login_required
  116. def post():
  117. form = forms.PostForm()
  118.  
  119. if form.validate_on_submit():
  120. models.Post.create(user=g.user._get_current_object(),
  121. content=form.content.data.strip())
  122. flash('Message posted.', 'success')
  123. return redirect(url_for('index'))
  124. return render_template('post.html', form=form)
  125.  
  126. def validateEmail(email):
  127. if len(email) > 7 and re.match("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$",
  128. email) is not None:
  129. return True
  130. return False
  131.  
  132.  
  133. if __name__ == '__main__':
  134. models.initialize()
  135. try:
  136. models.User.create_user(
  137. username='cosmoserdean',
  138. email='cosmoserdean@gmail.com',
  139. password='cosmote12',
  140. admin=True
  141. )
  142. app.run(debug=DEBUG, port=PORT)
  143. except ValueError:
  144. pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement