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/models.py | |
download | cheatdb-366a2302d092c12f388f0eb8efb4faaa3acd3303.tar.xz |
Initial commit
Diffstat (limited to 'app/models.py')
-rw-r--r-- | app/models.py | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/app/models.py b/app/models.py new file mode 100644 index 0000000..6129330 --- /dev/null +++ b/app/models.py @@ -0,0 +1,72 @@ +from flask import Flask, url_for +from flask.ext.sqlalchemy import SQLAlchemy +from app import app +from datetime import datetime +from sqlalchemy.orm import validates +from flask_user import login_required, UserManager, UserMixin, SQLAlchemyAdapter + +# Initialise database +db = SQLAlchemy(app) + +def title_to_url(title): + return title.lower().replace(" ", "_") + +def url_to_title(url): + return url.replace("_", " ") + +class User(db.Model, UserMixin): + id = db.Column(db.Integer, primary_key=True) + + # User authentication information + username = db.Column(db.String(50), nullable=False, unique=True) + password = db.Column(db.String(255), nullable=False, server_default='') + reset_password_token = db.Column(db.String(100), nullable=False, server_default='') + + # User email information + email = db.Column(db.String(255), nullable=True, unique=True) + confirmed_at = db.Column(db.DateTime()) + + # User information + active = db.Column('is_active', db.Boolean, nullable=False, server_default='0') + display_name = db.Column(db.String(100), nullable=False, server_default='') + + # Content + mods = db.relationship('Mod', backref='author', lazy='dynamic') + + def __init__(self, username): + import datetime + + self.username = username + self.confirmed_at = datetime.datetime.now() - datetime.timedelta(days=6000) + + def isClaimed(self): + return self.password is not None and self.password != "" + +class Role(db.Model): + id = db.Column(db.Integer(), primary_key=True) + name = db.Column(db.String(50), unique=True) + description = db.Column(db.String(255)) + +class UserRoles(db.Model): + id = db.Column(db.Integer(), primary_key=True) + user_id = db.Column(db.Integer(), db.ForeignKey('user.id', ondelete='CASCADE')) + role_id = db.Column(db.Integer(), db.ForeignKey('role.id', ondelete='CASCADE')) + +class Mod(db.Model): + id = db.Column(db.Integer, primary_key=True) + + # Basic details + author_id = db.Column(db.Integer, db.ForeignKey('user.id')) + name = db.Column(db.String(100), nullable=False) + title = db.Column(db.String(100), nullable=False) + desc = db.Column(db.Text, nullable=True) + + # Downloads + repo = db.Column(db.String(200), nullable=True) + website = db.Column(db.String(200), nullable=True) + issueTracker = db.Column(db.String(200), nullable=True) + forums = db.Column(db.String(200), nullable=False) + +# Setup Flask-User +db_adapter = SQLAlchemyAdapter(db, User) # Register the User model +user_manager = UserManager(db_adapter, app) # Initialize Flask-User |