Fixed a bug with the updating of the caching.

This commit is contained in:
Griatch 2012-02-26 01:10:20 +01:00
parent fb0d77c794
commit 24c4791e9e
3 changed files with 24 additions and 21 deletions

View file

@ -589,7 +589,7 @@ class ObjectDB(TypedObject):
""" """
contents = self.contents contents = self.contents
if exclude: if exclude:
excluce = make_iter(exclude) exclude = make_iter(exclude)
contents = [obj for obj in contents contents = [obj for obj in contents
if (obj not in exclude and obj not in exclude)] if (obj not in exclude and obj not in exclude)]
for obj in contents: for obj in contents:

View file

@ -41,7 +41,7 @@ from src.server.models import ServerConfig
from src.typeclasses import managers from src.typeclasses import managers
from src.locks.lockhandler import LockHandler from src.locks.lockhandler import LockHandler
from src.utils import logger, utils from src.utils import logger, utils
from src.utils.utils import is_iter, has_parent, to_unicode, to_str from src.utils.utils import make_iter, is_iter, has_parent, to_unicode, to_str
PERMISSION_HIERARCHY = [p.lower() for p in settings.PERMISSION_HIERARCHY] PERMISSION_HIERARCHY = [p.lower() for p in settings.PERMISSION_HIERARCHY]
@ -60,6 +60,15 @@ def get_cache(obj, name):
val = GA(obj, "db_%s" % name) val = GA(obj, "db_%s" % name)
SA(obj, "_cached_db_%s" % name, val) SA(obj, "_cached_db_%s" % name, val)
return val return val
def set_cache(obj, name, val):
"On-model Cache setter"
SA(obj, "db_%s" % name, val)
GA(obj, "save")()
SA(obj, "_cached_db_%s" % name, val)
def del_cache(obj, name):
"On-model cache deleter"
DA(obj, "_cached_db_%s" % name)
#------------------------------------------------------------ #------------------------------------------------------------
# #
@ -282,8 +291,7 @@ class Attribute(SharedMemoryModel):
#@key.setter #@key.setter
def key_set(self, value): def key_set(self, value):
"Setter. Allows for self.key = value" "Setter. Allows for self.key = value"
self.db_key = value set_cache(self, "key", value)
self.save()
#@key.deleter #@key.deleter
def key_del(self): def key_del(self):
"Deleter. Allows for del self.key" "Deleter. Allows for del self.key"
@ -298,13 +306,13 @@ class Attribute(SharedMemoryModel):
#@obj.setter #@obj.setter
def obj_set(self, value): def obj_set(self, value):
"Setter. Allows for self.obj = value" "Setter. Allows for self.obj = value"
self.db_obj = value set_cache(self, "db_obj", value)
self.save()
#@obj.deleter #@obj.deleter
def obj_del(self): def obj_del(self):
"Deleter. Allows for del self.obj" "Deleter. Allows for del self.obj"
self.db_obj = None self.db_obj = None
self.save() self.save()
del_cache(self, "db_obj")
obj = property(obj_get, obj_set, obj_del) obj = property(obj_get, obj_set, obj_del)
# date_created property (wraps db_date_created) # date_created property (wraps db_date_created)
@ -698,8 +706,7 @@ class TypedObject(SharedMemoryModel):
#@key.setter #@key.setter
def key_set(self, value): def key_set(self, value):
"Setter. Allows for self.key = value" "Setter. Allows for self.key = value"
SA(self, "db_key", value) set_cache(self, "key", value)
GA(self, "save")()
#@key.deleter #@key.deleter
def key_del(self): def key_del(self):
"Deleter. Allows for del self.key" "Deleter. Allows for del self.key"
@ -714,8 +721,7 @@ class TypedObject(SharedMemoryModel):
#@name.setter #@name.setter
def name_set(self, value): def name_set(self, value):
"Setter. Allows for self.name = value" "Setter. Allows for self.name = value"
SA(self, "db_key", value) set_cache(self, "name", value)
GA(self, "save")()
#@name.deleter #@name.deleter
def name_del(self): def name_del(self):
"Deleter. Allows for del self.name" "Deleter. Allows for del self.name"
@ -730,15 +736,13 @@ class TypedObject(SharedMemoryModel):
#@typeclass_path.setter #@typeclass_path.setter
def typeclass_path_set(self, value): def typeclass_path_set(self, value):
"Setter. Allows for self.typeclass_path = value" "Setter. Allows for self.typeclass_path = value"
self.db_typeclass_path = value set_cache(self, "typeclass_path", value)
self.save()
SA(self, '_cached_db_typeclass_path', value)
#@typeclass_path.deleter #@typeclass_path.deleter
def typeclass_path_del(self): def typeclass_path_del(self):
"Deleter. Allows for del self.typeclass_path" "Deleter. Allows for del self.typeclass_path"
self.db_typeclass_path = "" self.db_typeclass_path = ""
self.save() self.save()
DA(self, "_cached_db_typeclass_path") del_cache(self, "typeclass_path")
typeclass_path = property(typeclass_path_get, typeclass_path_set, typeclass_path_del) typeclass_path = property(typeclass_path_get, typeclass_path_set, typeclass_path_del)
# date_created property # date_created property
@ -766,16 +770,15 @@ class TypedObject(SharedMemoryModel):
return [] return []
#@permissions.setter #@permissions.setter
def permissions_set(self, value): def permissions_set(self, value):
"Setter. Allows for self.name = value. Stores as a comma-separated string." "Setter. Allows for self.name = value. Stores as a comma-separated string."
if is_iter(value): value = ",".join([utils.to_unicode(val).strip() for val in make_iter(value)])
value = ",".join([utils.to_unicode(val).strip() for val in value]) set_cache(self, "permissions", value)
self.db_permissions = value
self.save()
#@permissions.deleter #@permissions.deleter
def permissions_del(self): def permissions_del(self):
"Deleter. Allows for del self.name" "Deleter. Allows for del self.name"
self.db_permissions = "" self.db_permissions = ""
self.save() self.save()
del_cache(self, "permissions")
permissions = property(permissions_get, permissions_set, permissions_del) permissions = property(permissions_get, permissions_set, permissions_del)
# lock_storage property (wraps db_lock_storage) # lock_storage property (wraps db_lock_storage)
@ -786,8 +789,7 @@ class TypedObject(SharedMemoryModel):
#@lock_storage.setter #@lock_storage.setter
def lock_storage_set(self, value): def lock_storage_set(self, value):
"""Saves the lock_storagetodate. This is usually not called directly, but through self.lock()""" """Saves the lock_storagetodate. This is usually not called directly, but through self.lock()"""
self.db_lock_storage = value set_cache(self, "lock_storage", value)
self.save()
#@lock_storage.deleter #@lock_storage.deleter
def lock_storage_del(self): def lock_storage_del(self):
"Deleter is disabled. Use the lockhandler.delete (self.lock.delete) instead""" "Deleter is disabled. Use the lockhandler.delete (self.lock.delete) instead"""

View file

@ -477,6 +477,7 @@ def create_player(name, email, password,
return new_player return new_player
except Exception,e: except Exception,e:
# a failure in creating the character # a failure in creating the character
print e
if not user: if not user:
# in there was a failure we clean up everything we can # in there was a failure we clean up everything we can
logger.log_trace() logger.log_trace()