diff options
| author | rubenwardy <rw@rubenwardy.com> | 2018-03-18 17:43:30 +0000 |
|---|---|---|
| committer | rubenwardy <rw@rubenwardy.com> | 2018-03-18 17:43:30 +0000 |
| commit | 366a2302d092c12f388f0eb8efb4faaa3acd3303 (patch) | |
| tree | 070f3ef21b04bd716b9136a827d9fe7b90c32e2c /app/views | |
| download | cheatdb-366a2302d092c12f388f0eb8efb4faaa3acd3303.tar.xz | |
Initial commit
Diffstat (limited to 'app/views')
| -rw-r--r-- | app/views/__init__.py | 74 |
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) |
