evennia/lib/server/manager.py

53 lines
1.5 KiB
Python

"""
Custom manager for ServerConfig objects.
"""
from django.db import models
class ServerConfigManager(models.Manager):
"""
This ServerConfigManager implements methods for searching
and manipulating ServerConfigs directly from the database.
These methods will all return database objects
(or QuerySets) directly.
ServerConfigs are used to store certain persistent settings for the
server at run-time.
Evennia-specific:
conf
"""
def conf(self, key=None, value=None, delete=False, default=None):
"""
Access and manipulate config values
"""
if not key:
return self.all()
elif delete is True:
for conf in self.filter(db_key=key):
conf.delete()
elif value is not None:
conf = self.filter(db_key=key)
if conf:
conf = conf[0]
else:
conf = self.model(db_key=key)
conf.value = value # this will pickle
else:
conf = self.filter(db_key=key)
if not conf:
return default
return conf[0].value
def get_mysql_db_version(self):
"""
This is a helper method for getting the version string
of a mysql database.
"""
from django.db import connection
conn = connection.cursor()
conn.execute("SELECT VERSION()")
version = conn.fetchone()
return version and str(version[0]) or ""