mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-13 22:40:16 +02:00
SQL queries need to be different depending on SMF version
It's not a work of art, but it does the job. If anyone has a better idea, hit the comments ...
This commit is contained in:
parent
53ce4d2453
commit
a0d14eb1d3
@ -6,6 +6,8 @@ import hashlib
|
|||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
from packaging import version
|
||||||
|
|
||||||
from django.db import connections
|
from django.db import connections
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from allianceauth.eveonline.models import EveCharacter
|
from allianceauth.eveonline.models import EveCharacter
|
||||||
@ -20,10 +22,19 @@ class SmfManager:
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
SQL_ADD_USER = r"INSERT INTO %smembers (member_name, passwd, email_address, date_registered, real_name," \
|
# For SMF < 2.1
|
||||||
|
SQL_ADD_USER_SMF_20 = r"INSERT INTO %smembers (member_name, passwd, email_address, date_registered, real_name," \
|
||||||
|
r" buddy_list, message_labels, openid_uri, signature, ignore_boards) " \
|
||||||
|
r"VALUES (%%s, %%s, %%s, %%s, %%s, 0, 0, 0, 0, 0)" % TABLE_PREFIX
|
||||||
|
|
||||||
|
# For SMF >= 2.1
|
||||||
|
SQL_ADD_USER_SMF_21 = r"INSERT INTO %smembers (member_name, passwd, email_address, date_registered, real_name," \
|
||||||
r" buddy_list, signature, ignore_boards) " \
|
r" buddy_list, signature, ignore_boards) " \
|
||||||
r"VALUES (%%s, %%s, %%s, %%s, %%s, 0, 0, 0)" % TABLE_PREFIX
|
r"VALUES (%%s, %%s, %%s, %%s, %%s, 0, 0, 0)" % TABLE_PREFIX
|
||||||
|
|
||||||
|
# returns something like »window.smfVersion = "SMF 2.0.19";«
|
||||||
|
SQL_GET_CURRENT_SMF_VERSION = r"SELECT data FROM %sadmin_info_files WHERE filename = %%s" % TABLE_PREFIX
|
||||||
|
|
||||||
SQL_DEL_USER = r"DELETE FROM %smembers where member_name = %%s" % TABLE_PREFIX
|
SQL_DEL_USER = r"DELETE FROM %smembers where member_name = %%s" % TABLE_PREFIX
|
||||||
|
|
||||||
SQL_DIS_USER = r"UPDATE %smembers SET email_address = %%s, passwd = %%s WHERE member_name = %%s" % TABLE_PREFIX
|
SQL_DIS_USER = r"UPDATE %smembers SET email_address = %%s, passwd = %%s WHERE member_name = %%s" % TABLE_PREFIX
|
||||||
@ -46,6 +57,23 @@ class SmfManager:
|
|||||||
|
|
||||||
SQL_ADD_USER_AVATAR = r"UPDATE %smembers SET avatar = %%s WHERE id_member = %%s" % TABLE_PREFIX
|
SQL_ADD_USER_AVATAR = r"UPDATE %smembers SET avatar = %%s WHERE id_member = %%s" % TABLE_PREFIX
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _get_current_smf_version(cls) -> str:
|
||||||
|
"""
|
||||||
|
Get the current SMF version from the DB
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
|
||||||
|
cursor = connections['smf'].cursor()
|
||||||
|
cursor.execute(cls.SQL_GET_CURRENT_SMF_VERSION, ['current-version.js'])
|
||||||
|
row = cursor.fetchone()
|
||||||
|
smf_version_string = row[0]
|
||||||
|
|
||||||
|
smf_version = smf_version_string.replace('window.smfVersion = "SMF ', '').replace('";', '')
|
||||||
|
|
||||||
|
return smf_version
|
||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _sanitize_groupname(name):
|
def _sanitize_groupname(name):
|
||||||
name = name.strip(' _')
|
name = name.strip(' _')
|
||||||
@ -161,8 +189,22 @@ class SmfManager:
|
|||||||
cls.__update_user_info(username_clean, email_address, pwhash)
|
cls.__update_user_info(username_clean, email_address, pwhash)
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
cursor.execute(cls.SQL_ADD_USER,
|
smf_version = cls._get_current_smf_version()
|
||||||
[username_clean, pwhash, email_address, register_date, username_clean])
|
|
||||||
|
if version.parse(smf_version) < version.parse("2.1"):
|
||||||
|
logger.debug("SMF compatibility: < 2.1")
|
||||||
|
|
||||||
|
cursor.execute(
|
||||||
|
cls.SQL_ADD_USER_SMF_20,
|
||||||
|
[username_clean, pwhash, email_address, register_date, username_clean]
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
logger.debug("SMF compatibility: >= 2.1")
|
||||||
|
|
||||||
|
cursor.execute(
|
||||||
|
cls.SQL_ADD_USER_SMF_21,
|
||||||
|
[username_clean, pwhash, email_address, register_date, username_clean]
|
||||||
|
)
|
||||||
cls.add_avatar(username_clean, characterid)
|
cls.add_avatar(username_clean, characterid)
|
||||||
logger.info(f"Added smf member_name {username_clean}")
|
logger.info(f"Added smf member_name {username_clean}")
|
||||||
cls.update_groups(username_clean, groups)
|
cls.update_groups(username_clean, groups)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user