aboutsummaryrefslogtreecommitdiff
path: root/app/views
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2018-03-18 17:43:30 +0000
committerrubenwardy <rw@rubenwardy.com>2018-03-18 17:43:30 +0000
commit366a2302d092c12f388f0eb8efb4faaa3acd3303 (patch)
tree070f3ef21b04bd716b9136a827d9fe7b90c32e2c /app/views
downloadcheatdb-366a2302d092c12f388f0eb8efb4faaa3acd3303.tar.xz
Initial commit
Diffstat (limited to 'app/views')
-rw-r--r--app/views/__init__.py74
1 files changed, 74 insertions, 0 deletions
diff --git a/app/views/__init__.py b/app/views/__init__.py
new file mode 100644
index 0000000..deb5ac5
--- /dev/null
+++ b/app/views/__init__.py
@@ -0,0 +1,74 @@
+from app import app
+from flask import *
+from flask_user import *
+from flask_login import login_user, logout_user
+from app.models import *
+from flask.ext import menu, markdown
+from sqlalchemy import func
+from werkzeug.contrib.cache import SimpleCache
+cache = SimpleCache()
+
+menu.Menu(app=app)
+markdown.Markdown(app, extensions=['fenced_code'])
+
+# TODO: remove on production!
+@app.route('/static/<path:path>')
+def send_static(path):
+ return send_from_directory('static', path)
+
+@app.route('/')
+@menu.register_menu(app, '.', 'Home')
+def home_page():
+ return render_template('index.html')
+
+# Define the User registration form
+# It augments the Flask-User RegisterForm with additional fields
+from flask_user.forms import RegisterForm
+from flask_wtf import FlaskForm
+from wtforms import StringField, SubmitField, validators
+class MyRegisterForm(RegisterForm):
+ first_name = StringField('First name', validators=[
+ validators.DataRequired('First name is required')])
+ last_name = StringField('Last name', validators=[
+ validators.DataRequired('Last name is required')])
+
+# Define the User profile form
+class UserProfileForm(FlaskForm):
+ first_name = StringField('First name', validators=[
+ validators.DataRequired('First name is required')])
+ last_name = StringField('Last name', validators=[
+ validators.DataRequired('Last name is required')])
+ submit = SubmitField('Save')
+
+@app.route('/user/', methods=['GET', 'POST'])
+@app.route('/user/<username>/', methods=['GET'])
+def user_profile_page(username=None):
+ user = None
+ form = None
+ if username is None:
+ if not current_user.is_authenticated:
+ return current_app.login_manager.unauthorized()
+ user = current_user
+ else:
+ user = User.query.filter_by(username=username).first()
+ if not user:
+ abort(404)
+
+ if user == current_user:
+ # Initialize form
+ form = UserProfileForm(request.form, current_user)
+
+ # Process valid POST
+ if request.method=='POST' and form.validate():
+ # Copy form fields to user_profile fields
+ form.populate_obj(current_user)
+
+ # Save user_profile
+ db.session.commit()
+
+ # Redirect to home page
+ return redirect(url_for('home_page'))
+
+ # Process GET or invalid POST
+ return render_template('users/user_profile_page.html',
+ user=user, form=form)