add invite system
This commit is contained in:
@ -1,5 +1,6 @@
|
||||
from .db import Model, db
|
||||
from .constants import PermissionLevel
|
||||
from flask import current_app
|
||||
import time
|
||||
|
||||
class Users(Model):
|
||||
@ -48,7 +49,8 @@ class Users(Model):
|
||||
COUNT(DISTINCT posts.id) AS post_count,
|
||||
COUNT(DISTINCT threads.id) AS thread_count,
|
||||
MAX(threads.title) FILTER (WHERE threads.created_at = latest.created_at) AS latest_thread_title,
|
||||
MAX(threads.slug) FILTER (WHERE threads.created_at = latest.created_at) AS latest_thread_slug
|
||||
MAX(threads.slug) FILTER (WHERE threads.created_at = latest.created_at) AS latest_thread_slug,
|
||||
inviter.username AS inviter_username
|
||||
FROM users
|
||||
LEFT JOIN posts ON posts.user_id = users.id
|
||||
LEFT JOIN threads ON threads.user_id = users.id
|
||||
@ -57,6 +59,7 @@ class Users(Model):
|
||||
FROM threads
|
||||
GROUP BY user_id
|
||||
) latest ON latest.user_id = users.id
|
||||
LEFT JOIN users AS inviter ON inviter.id = users.invited_by
|
||||
WHERE users.id = ?"""
|
||||
return db.fetch_one(q, self.id)
|
||||
|
||||
@ -83,6 +86,18 @@ class Users(Model):
|
||||
|
||||
return True
|
||||
|
||||
def can_invite(self):
|
||||
if not current_app.config['DISABLE_SIGNUP']:
|
||||
return True
|
||||
|
||||
if current_app.config['MODS_CAN_INVITE'] and self.is_mod():
|
||||
return True
|
||||
|
||||
if current_app.config['USERS_CAN_INVITE'] and not self.is_guest():
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
|
||||
class Topics(Model):
|
||||
table = "topics"
|
||||
@ -285,3 +300,7 @@ class Reactions(Model):
|
||||
|
||||
class PasswordResetLinks(Model):
|
||||
table = "password_reset_links"
|
||||
|
||||
|
||||
class InviteKeys(Model):
|
||||
table = 'invite_keys'
|
||||
|
Reference in New Issue
Block a user