Reworked DB accessing plugins to use a common API class

This commit is contained in:
2010-05-14 10:45:01 +01:00
parent a2d4d5218d
commit f7870e57cb
5 changed files with 33 additions and 80 deletions

View File

@@ -57,3 +57,33 @@ class BaseService():
def login(uid):
""" Login the user and provide cookies back """
pass
class BaseDBService(BaseService):
@property
def _db(self):
if not hasattr(self, '_db'):
# Use the master DB settings, bar the database name
backend = load_backend(settings.DATABASE_ENGINE)
self._db = backend.DatabaseWrapper({
'DATABASE_HOST': settings.DATABASE_HOST,
'DATABASE_NAME': self.settings['database_name'],
'DATABASE_OPTIONS': {},
'DATABASE_PASSWORD': settings.DATABASE_PASSWORD,
'DATABASE_PORT': settings.DATABASE_PORT,
'DATABASE_USER': settings.DATABASE_USER,
'TIME_ZONE': settings.TIME_ZONE,})
return self._db
@property
def _dbcursor(self):
return self._db.dbcursor()
def __del__(self):
if hasattr(self, '_db'):
self._db.connection.commit()
self._db.close()
self._db = None

View File

@@ -2,10 +2,10 @@ import crypt
import random
import time
from django.db import load_backend, transaction
from sso.services import BaseService
from sso.services import BaseDBService
import settings
class MiningBuddyService(BaseService):
class MiningBuddyService(BaseDBService):
"""
Mining Buddy Class, allows registration and sign-in
@@ -25,25 +25,6 @@ class MiningBuddyService(BaseService):
SQL_CHECK_USER = r"SELECT username from users WHERE username = %s and deleted = 0"
SQL_DEL_USER = r"UPDATE users set deleted = 1 WHERE username = %s"
def __init__(self):
# Use the master DB settings, bar the database name
backend = load_backend(settings.DATABASE_ENGINE)
self._db = backend.DatabaseWrapper({
'DATABASE_HOST': settings.DATABASE_HOST,
'DATABASE_NAME': self.settings['database_name'],
'DATABASE_OPTIONS': {},
'DATABASE_PASSWORD': settings.DATABASE_PASSWORD,
'DATABASE_PORT': settings.DATABASE_PORT,
'DATABASE_USER': settings.DATABASE_USER,
'TIME_ZONE': settings.TIME_ZONE,})
self._dbcursor = self._db.cursor()
def __del__(self):
self._db.close()
self._db = None
def _gen_salt(self):
return self.settings['password_salt']

View File

@@ -4,7 +4,7 @@ from django.db import load_backend, transaction, IntegrityError
from sso.services import BaseService
import settings
class PhpBBService(BaseService):
class PhpBBService(BaseDBService):
"""
PHPBB Class, allows registration and sign-in
@@ -22,26 +22,6 @@ class PhpBBService(BaseService):
SQL_GET_GROUP = r"SELECT group_id from phpbb_groups WHERE group_name = %s"
SQL_ADD_GROUP = r"INSERT INTO phpbb_groups (group_name) VALUES (%s)"
def __init__(self):
# Use the master DB settings, bar the database name
backend = load_backend(settings.DATABASE_ENGINE)
self._db = backend.DatabaseWrapper({
'DATABASE_HOST': settings.DATABASE_HOST,
'DATABASE_NAME': settings.PHPBB_DATABASE,
'DATABASE_OPTIONS': {},
'DATABASE_PASSWORD': settings.DATABASE_PASSWORD,
'DATABASE_PORT': settings.DATABASE_PORT,
'DATABASE_USER': settings.DATABASE_USER,
'TIME_ZONE': settings.TIME_ZONE,})
self._dbcursor = self._db.cursor()
def __del__(self):
self._db.close()
self._db = None
def _gen_salt(self):
return "%x" % random.randint(0, 2147483647)

View File

@@ -20,25 +20,6 @@ class QMSService(BaseService):
SQL_ENABLE_USER = r"UPDATE users SET passhash = %s, salt = %s, certificate = %s WHERE ssoid = %s"
SQL_CHECK_USER = r"SELECT ssoid from users WHERE ssoid = %s"
def __init__(self):
# Use the master DB settings, bar the database name
backend = load_backend(settings.DATABASE_ENGINE)
self._db = backend.DatabaseWrapper({
'DATABASE_HOST': settings.DATABASE_HOST,
'DATABASE_NAME': self.settings['database_name'],
'DATABASE_OPTIONS': {},
'DATABASE_PASSWORD': settings.DATABASE_PASSWORD,
'DATABASE_PORT': settings.DATABASE_PORT,
'DATABASE_USER': settings.DATABASE_USER,
'TIME_ZONE': settings.TIME_ZONE,})
self._dbcursor = self._db.cursor()
def __del__(self):
self._db.close()
self._db = None
def _gen_salt(self):
return hashlib.md5("%x" % random.randint(0, 2147483647)).hexdigest()[:6]

View File

@@ -25,25 +25,6 @@ class MediawikiService(BaseService):
SQL_DEL_REV = r"UPDATE revision SET rev_user = (SELECT user_id FROM user WHERE user_name = 'DeletedUser'), rev_user_text = 'DeletedUser' WHERE rev_user = (SELECT user_id FROM user WHERE user_name = %s)"
SQL_DEL_USER = r"DELETE FROM user WHERE user_name = %s"
def __init__(self):
# Use the master DB settings, bar the database name
backend = load_backend(settings.DATABASE_ENGINE)
self._db = backend.DatabaseWrapper({
'DATABASE_HOST': settings.DATABASE_HOST,
'DATABASE_NAME': self.settings['database_name'],
'DATABASE_OPTIONS': {},
'DATABASE_PASSWORD': settings.DATABASE_PASSWORD,
'DATABASE_PORT': settings.DATABASE_PORT,
'DATABASE_USER': settings.DATABASE_USER,
'TIME_ZONE': settings.TIME_ZONE,})
self._dbcursor = self._db.cursor()
def __del__(self):
self._db.close()
self._db = None
def _gen_salt(self):
return "%x" % random.randint(0, 2147483647)