flash / Database /sql /blacklistusers_sql.py
Karma
Add files via upload
c7dfe8b
raw
history blame
1.54 kB
import threading
from sqlalchemy import Column, String, UnicodeText
from Database.sql import BASE, SESSION
class BlacklistUsers(BASE):
__tablename__ = "blacklistusers"
user_id = Column(String(14), primary_key=True)
reason = Column(UnicodeText)
def __init__(self, user_id, reason=None):
self.user_id = user_id
self.reason = reason
BlacklistUsers.__table__.create(checkfirst=True)
BLACKLIST_LOCK = threading.RLock()
BLACKLIST_USERS = set()
def blacklist_user(user_id, reason=None):
with BLACKLIST_LOCK:
user = SESSION.query(BlacklistUsers).get(str(user_id))
if not user:
user = BlacklistUsers(str(user_id), reason)
else:
user.reason = reason
SESSION.add(user)
SESSION.commit()
__load_blacklist_userid_list()
def unblacklist_user(user_id):
with BLACKLIST_LOCK:
user = SESSION.query(BlacklistUsers).get(str(user_id))
if user:
SESSION.delete(user)
SESSION.commit()
__load_blacklist_userid_list()
def get_reason(user_id):
user = SESSION.query(BlacklistUsers).get(str(user_id))
rep = ""
if user:
rep = user.reason
SESSION.close()
return rep
def is_user_blacklisted(user_id):
return user_id in BLACKLIST_USERS
def __load_blacklist_userid_list():
global BLACKLIST_USERS
try:
BLACKLIST_USERS = {int(x.user_id) for x in SESSION.query(BlacklistUsers).all()}
finally:
SESSION.close()
__load_blacklist_userid_list()