evennia/reload/managers.py
loki77 3fe644ef17 Indentation change 3-4 spaces.
Possible files that need to be cleanedup;
commands/info.py:cmd_list
commands/general.py:cmd_who
commands/comsys.py:cmd_who

cmdtable.py
ansi.py
2008-06-13 19:52:29 +00:00

51 lines
1.4 KiB
Python

import functions_general
class ReloadManager(object):
objects_cache = {}
failed = []
models = {}
def __init__(self, server):
self.server = server
def do_cache(self):
for module, info in self.models.iteritems():
module_obj = __import__(module)
for ituple in info:
mclass = getattr(module_obj, info[0])
for instance in mclass.__instances__():
instance.cache(self, do_save=ituple[1])
def do_reload(self):
self.do_cache()
self.server.reload()
self.reload_objects()
def cache_object(self, obj):
obj_dict = {}
for key, value in obj.__dict__.iteritems():
if not callable(obj[key]):
obj_dict[key] = value
self.objects_cache[obj] = obj_dict
def reload_objects(self):
for obj, cache in self.objects_cache.iteritems():
try:
obj.reload(cache)
except:
functions_general.log_errmsg("Failed to reload cache for object: %s." % (obj,))
self.failed.append(obj)
raise
self.objects_cache = {}
for obj in self.failed:
try:
obj.__dict__.update(cache)
except:
functions_general.log_errmsg("Failed to update object %s, giving up." %s (obj,))
raise
self.failed = []