aboutsummaryrefslogtreecommitdiff
path: root/app/models.py
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2018-03-18 17:43:30 +0000
committerrubenwardy <rw@rubenwardy.com>2018-03-18 17:43:30 +0000
commit366a2302d092c12f388f0eb8efb4faaa3acd3303 (patch)
tree070f3ef21b04bd716b9136a827d9fe7b90c32e2c /app/models.py
downloadcheatdb-366a2302d092c12f388f0eb8efb4faaa3acd3303.tar.xz
Initial commit
Diffstat (limited to 'app/models.py')
-rw-r--r--app/models.py72
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