|
|
@ -1,16 +1,44 @@ |
|
|
|
import os |
|
|
|
from flask import Flask, render_template, session, redirect, url_for, flash |
|
|
|
from flask_bootstrap import Bootstrap |
|
|
|
from flask_moment import Moment |
|
|
|
from flask_wtf import FlaskForm |
|
|
|
from wtforms import StringField, SubmitField |
|
|
|
from wtforms.validators import DataRequired |
|
|
|
from flask_sqlalchemy import SQLAlchemy |
|
|
|
|
|
|
|
|
|
|
|
basedir = os.path.abspath(os.path.dirname(__file__)) |
|
|
|
|
|
|
|
app = Flask(__name__) |
|
|
|
app.config['SECRET_KEY'] = 'hard to guess string' |
|
|
|
app.config['SQLALCHEMY_DATABASE_URI'] = \ |
|
|
|
'sqlite:///' + os.path.join(basedir, 'data.sqlite') |
|
|
|
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False |
|
|
|
|
|
|
|
bootstrap = Bootstrap(app) |
|
|
|
moment = Moment(app) |
|
|
|
db = SQLAlchemy(app) |
|
|
|
|
|
|
|
|
|
|
|
class Role(db.Model): |
|
|
|
__tablename__ = 'roles' |
|
|
|
id = db.Column(db.Integer, primary_key=True) |
|
|
|
name = db.Column(db.String(64), unique=True) |
|
|
|
users = db.relationship('User', backref='role') |
|
|
|
|
|
|
|
def __repr__(self): |
|
|
|
return '<Role %r>' % self.name |
|
|
|
|
|
|
|
|
|
|
|
class User(db.Model): |
|
|
|
__tablename__ = 'users' |
|
|
|
id = db.Column(db.Integer, primary_key=True) |
|
|
|
username = db.Column(db.String(64), unique=True, index=True) |
|
|
|
role_id = db.Column(db.Integer, db.ForeignKey('roles.id')) |
|
|
|
|
|
|
|
def __repr__(self): |
|
|
|
return '<User %r>' % self.username |
|
|
|
|
|
|
|
|
|
|
|
class NameForm(FlaskForm): |
|
|
|