aboutsummaryrefslogtreecommitdiff
path: root/app/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/models.py')
-rw-r--r--app/models.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/app/models.py b/app/models.py
index 545a7f1..3a41c83 100644
--- a/app/models.py
+++ b/app/models.py
@@ -79,6 +79,7 @@ class Permission(enum.Enum):
SEE_THREAD = "SEE_THREAD"
CREATE_THREAD = "CREATE_THREAD"
UNAPPROVE_PACKAGE = "UNAPPROVE_PACKAGE"
+ TOPIC_DISCARD = "TOPIC_DISCARD"
# Only return true if the permission is valid for *all* contexts
# See Package.checkPerm for package-specific contexts
@@ -843,6 +844,21 @@ class ForumTopic(db.Model):
"created_at": self.created_at.isoformat(),
}
+ def checkPerm(self, user, perm):
+ if not user.is_authenticated:
+ return False
+
+ if type(perm) == str:
+ perm = Permission[perm]
+ elif type(perm) != Permission:
+ raise Exception("Unknown permission given to ForumTopic.checkPerm()")
+
+ if perm == Permission.TOPIC_DISCARD:
+ return self.author == user or user.rank.atLeast(UserRank.EDITOR)
+
+ else:
+ raise Exception("Permission {} is not related to topics".format(perm.name))
+
# Setup Flask-User
db_adapter = SQLAlchemyAdapter(db, User) # Register the User model