diff --git a/models/database.py b/models/database.py new file mode 100644 index 0000000000000000000000000000000000000000..7f8a886f10612109ba6b0d0d4c5eaabffc2cd6a0 --- /dev/null +++ b/models/database.py @@ -0,0 +1,20 @@ +form flask.ext.login import UserMixin + +from shared import db + +class User(db.Model, UserMixin): + __tablename__ = "users" + id = db.Column(db.Integer, primary_key=True) + fullname = db.Column(db.String) + username = db.Column(db.String, unique=True) + password = db.Column(db.String) + roles = db.Column(db.PickleType) + + def __init__(self, fullname, username, password, roles=None): + self.fullname = fullname + self.username = username + self.password = password + self.roles = roles + + def __repr__(self): + return "<User(id={}, fullname='{}', username='{}', password'{}', roles'{})>".format(self.id, self.fullname, self.username, self.password, self.roles) diff --git a/models/forms.py b/models/forms.py new file mode 100644 index 0000000000000000000000000000000000000000..9ae1b0a32e4cb5822fd8f46f4f77e868ea2d1025 --- /dev/null +++ b/models/forms.py @@ -0,0 +1,22 @@ +from flask.ext.wtf import form +from wtforms import StringField, PasswordField, BooleanField, SelectMultipleField, SelectField, DateField, IntegerField, TextAreaField +from wtforms.validators import InputRequired, Length, EqualTo, Email, Optional, Length, NumberRange, AnyOf +from models.database import User + +import shared + + +class LoginForm(Form): + username = StringField("Username", validators=[InputRequired("Entering your username is required.")]) + password = PasswordField("Password", validators=[InputRequired("Entering your password is required.")]) + +class NewUserForm(Form): + fullname = StringField("Full name", validators=[InputRequired("Entering your name is required.")]) + username = StringField("Username", validators=[InputRequired("Entering your username is required.")]) + password = PasswordField("Password", validators=[InputRequired("Entering your password is required.")]) + confirm = PasswordField("Repeat Password", validators=[InputRequired("Entering your password is required."), EqualTo("password", message="Your passwords must match.")]) + +class AdminUserForm(Form): + fullname = StringField("Full name", validators=[InputRequired("Entering the name is required.")]) + username = StringField("Username", validators=[InputRequired("Entering the username is required.")]) + roles = SelectMultipleField("User roles", choices=[(x.lower().strip(), x) for x in shared.roles]) diff --git a/server.py b/server.py old mode 100644 new mode 100755 diff --git a/static/css/style.css b/static/css/style.css new file mode 100644 index 0000000000000000000000000000000000000000..63e56825b3ab0a6b94f28161a7152410f5e3086f --- /dev/null +++ b/static/css/style.css @@ -0,0 +1,16 @@ + +.flash-card.mdl-card { + +} + +.flash-card.mdl-card.alert-success { + background-color: lightgreen; +} + +.flash-card.mdl-card.alert-warning { + background-color: orange; +} + +.flash-card.mdl-card.alert-error { + background-color: red; +}