Source code for evennia.server.manager
"""
Custom manager for ServerConfig objects.
"""
from django.db import models
[docs]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.
"""
[docs] def conf(self, key=None, value=None, delete=False, default=None):
"""
Add, retrieve and manipulate config values.
Args:
key (str, optional): Name of config.
value (str, optional): Data to store in this config value.
delete (bool, optional): If `True`, delete config with `key`.
default (str, optional): Use when retrieving a config value
by a key that does not exist.
Returns:
all (list): If `key` was not given - all stored config values.
value (str): If `key` was given, this is the stored value, or
`default` if no matching `key` was found.
"""
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:
if callable(default):
# allows for `dict` to be a default value
return default()
return default
return conf[0].value
return None