diff options
Diffstat (limited to 'app/models.py')
-rw-r--r-- | app/models.py | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/app/models.py b/app/models.py index 568981a..4c0ccc3 100644 --- a/app/models.py +++ b/app/models.py @@ -222,22 +222,34 @@ class User(db.Model, UserMixin): raise Exception("Permission {} is not related to users".format(perm.name)) def canCommentRL(self): + factor = 1 + if self.rank.atLeast(UserRank.ADMIN): + return True + elif self.rank.atLeast(UserRank.TRUSTED_MEMBER): + factor *= 2 + one_min_ago = datetime.datetime.utcnow() - datetime.timedelta(minutes=1) if ThreadReply.query.filter_by(author=self) \ - .filter(ThreadReply.created_at > one_min_ago).count() >= 3: + .filter(ThreadReply.created_at > one_min_ago).count() >= 3 * factor: return False hour_ago = datetime.datetime.utcnow() - datetime.timedelta(hours=1) if ThreadReply.query.filter_by(author=self) \ - .filter(ThreadReply.created_at > hour_ago).count() >= 20: + .filter(ThreadReply.created_at > hour_ago).count() >= 20 * factor: return False return True def canOpenThreadRL(self): + factor = 1 + if self.rank.atLeast(UserRank.ADMIN): + return True + elif self.rank.atLeast(UserRank.TRUSTED_MEMBER): + factor *= 5 + hour_ago = datetime.datetime.utcnow() - datetime.timedelta(hours=1) return Thread.query.filter_by(author=self) \ - .filter(Thread.created_at > hour_ago).count() < 2 + .filter(Thread.created_at > hour_ago).count() < 2 * factor def __eq__(self, other): if other is None: |