evennia/src/server/manager.py

54 lines
1.5 KiB
Python
Raw Normal View History

"""
Custom manager for ServerConfig objects.
"""
from django.db import models
class ServerConfigManager(models.Manager):
"""
2012-03-30 23:57:04 +02:00
This ServerConfigManager implements methods for searching
and manipulating ServerConfigs directly from the database.
2012-03-30 23:57:04 +02:00
These methods will all return database objects
(or QuerySets) directly.
2012-03-30 23:57:04 +02:00
ServerConfigs are used to store certain persistent settings for the
server at run-time.
Evennia-specific:
2012-03-30 23:57:04 +02:00
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:
2012-03-30 23:57:04 +02:00
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 ""