evennia/src/server/manager.py
2012-03-30 23:57:04 +02:00

41 lines
1.1 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 == True:
for conf in self.filter(db_key=key):
conf.delete()
elif value != 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