aboutsummaryrefslogtreecommitdiff
path: root/app/models.py
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2018-12-25 19:28:32 +0000
committerrubenwardy <rw@rubenwardy.com>2018-12-25 19:28:32 +0000
commit21960f24047bdf64eff99ec955ff2229c49eff50 (patch)
treee5bafd280407fabe863f4d1fbf5b667f02c607e3 /app/models.py
parentf94885a58f05864682af5394c1b0c3733d46a305 (diff)
downloadcheatdb-21960f24047bdf64eff99ec955ff2229c49eff50.tar.xz
Add support for using forum profile pictures
Diffstat (limited to 'app/models.py')
-rw-r--r--app/models.py25
1 files changed, 16 insertions, 9 deletions
diff --git a/app/models.py b/app/models.py
index 3a41c83..d3cba53 100644
--- a/app/models.py
+++ b/app/models.py
@@ -19,7 +19,7 @@ from flask import Flask, url_for
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from urllib.parse import urlparse
-from app import app
+from app import app, gravatar
from datetime import datetime
from sqlalchemy.orm import validates
from flask_user import login_required, UserManager, UserMixin, SQLAlchemyAdapter
@@ -97,26 +97,27 @@ class Permission(enum.Enum):
raise Exception("Non-global permission checked globally. Use Package.checkPerm or User.checkPerm instead.")
class User(db.Model, UserMixin):
- id = db.Column(db.Integer, primary_key=True)
+ id = db.Column(db.Integer, primary_key=True)
# User authentication information
- username = db.Column(db.String(50, collation="NOCASE"), nullable=False, unique=True, index=True)
- password = db.Column(db.String(255), nullable=True)
+ username = db.Column(db.String(50, collation="NOCASE"), nullable=False, unique=True, index=True)
+ password = db.Column(db.String(255), nullable=True)
reset_password_token = db.Column(db.String(100), nullable=False, server_default="")
- rank = db.Column(db.Enum(UserRank))
+ rank = db.Column(db.Enum(UserRank))
# Account linking
github_username = db.Column(db.String(50, collation="NOCASE"), nullable=True, unique=True)
forums_username = db.Column(db.String(50, collation="NOCASE"), nullable=True, unique=True)
# User email information
- email = db.Column(db.String(255), nullable=True, unique=True)
- confirmed_at = db.Column(db.DateTime())
+ 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="")
+ profile_pic = db.Column(db.String(255), nullable=True, server_default=None)
+ active = db.Column("is_active", db.Boolean, nullable=False, server_default="0")
+ display_name = db.Column(db.String(100), nullable=False, server_default="")
# Content
notifications = db.relationship("Notification", primaryjoin="User.id==Notification.user_id")
@@ -146,6 +147,12 @@ class User(db.Model, UserMixin):
def isClaimed(self):
return self.rank.atLeast(UserRank.NEW_MEMBER)
+ def getProfilePicURL(self):
+ if self.profile_pic:
+ return self.profile_pic
+ else:
+ return gravatar(self.email or "")
+
def checkPerm(self, user, perm):
if not user.is_authenticated:
return False