Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from flask import Flask, render_template, redirect, url_for, flash, session
- from flask_wtf import Form
- from wtforms import StringField, PasswordField, BooleanField, TextField, TextAreaField, SubmitField, validators, ValidationError
- from wtforms.validators import InputRequired, Email, Length, EqualTo
- from flask_sqlalchemy import SQLAlchemy
- from werkzeug.security import generate_password_hash, check_password_hash
- from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user
- from flask.ext.mail import Message, Mail
- app = Flask(__name__)
- app.config['SECRET_KEY'] = 'Thisissupposedtobesecret!'
- app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////Users/Joanna/Desktop/coursework2/sourcecode/database.db'
- db = SQLAlchemy(app)
- class LoginForm(Form):
- username = StringField('username', validators=[InputRequired(), Length(min=4, max=15)])
- password = PasswordField('password', validators=[InputRequired(), Length(min=8, max=80)])
- remember = BooleanField('remember me')
- class RegisterForm(Form):
- email = StringField('email', validators=[InputRequired(), Email(message='Invalid email'), Length(min=6, max=40)])
- username = StringField('username', validators=[InputRequired(), Length(min=4, max=15)])
- password = PasswordField('password', validators=[InputRequired(), Length(min=4, max=40)])
- confirm = PasswordField('Repeat Password', validators=[InputRequired(), EqualTo('password')])
- class User(db.Model):
- __tablename__ = 'user';
- id = db.Column(db.Integer, primary_key=True)
- username = db.Column(db.String(15), unique=True)
- email = db.Column(db.String(40), unique=True)
- password = db.Column(db.String(40))
- def __init__(self, username, email, password):
- self.username = username
- self.email = email
- self.password = password
- def __repr__(self):
- return '<User {0}>'.format(self.name)
- @app.route('/')
- def index():
- return render_template('index.html')
- @app.route('/signup/', methods=['GET', 'POST'])
- def signup():
- form = RegisterForm(request.form)
- if request.method == 'POST':
- if form.validate_on_submit():
- try:
- new_user = User(form.username.data, form.email.data, form.password.data)
- new_user.authenticated = True
- db.session.add(new_user)
- db.session.commit()
- flash('Thanks for registering!', 'success')
- return redirect(url_for('index'))
- except IntegrityError:
- db.session.rollback()
- flash('ERROR! Email({}) already exists.'.format(form.email.data), 'error')
- return render_template('signup.html', form=form)
- @app.route('/login/', methods=['GET', 'POST'])
- def login():
- return render_template('login.html')
- @app.route('/logout/')
- @login_required
- def logout():
- logout_user()
- return redirect(url_for('index'))
- if __name__ == '__main__':
- app.run('0.0.0.0', debug=True)
Add Comment
Please, Sign In to add comment