Added caching for aliases.
This commit is contained in:
parent
1fa5791e19
commit
fb0d77c794
2 changed files with 19 additions and 37 deletions
|
|
@ -230,8 +230,7 @@ def at_multimatch_cmd(caller, matches):
|
||||||
is_channel = " (channel)"
|
is_channel = " (channel)"
|
||||||
else:
|
else:
|
||||||
is_channel = ""
|
is_channel = ""
|
||||||
is_exit = hasattr(cmd, "is_exit") and cmd.is_exit
|
if cmd.is_exit and cmd.destination:
|
||||||
if is_exit and cmd.destination:
|
|
||||||
is_exit = " (exit to %s)" % cmd.destination
|
is_exit = " (exit to %s)" % cmd.destination
|
||||||
else:
|
else:
|
||||||
is_exit = ""
|
is_exit = ""
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ from django.conf import settings
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
|
|
||||||
from src.utils.idmapper.models import SharedMemoryModel
|
from src.utils.idmapper.models import SharedMemoryModel
|
||||||
from src.typeclasses.models import Attribute, TypedObject, TypeNick, TypeNickHandler
|
from src.typeclasses.models import Attribute, TypedObject, TypeNick, TypeNickHandler, get_cache
|
||||||
from src.typeclasses.typeclass import TypeClass
|
from src.typeclasses.typeclass import TypeClass
|
||||||
from src.objects.manager import ObjectManager
|
from src.objects.manager import ObjectManager
|
||||||
from src.players.models import PlayerDB
|
from src.players.models import PlayerDB
|
||||||
|
|
@ -29,12 +29,16 @@ from src.commands.cmdsethandler import CmdSetHandler
|
||||||
from src.commands import cmdhandler
|
from src.commands import cmdhandler
|
||||||
from src.scripts.scripthandler import ScriptHandler
|
from src.scripts.scripthandler import ScriptHandler
|
||||||
from src.utils import logger
|
from src.utils import logger
|
||||||
from src.utils.utils import is_iter, to_unicode, to_str, mod_import
|
from src.utils.utils import make_iter, to_unicode, to_str, mod_import
|
||||||
|
|
||||||
#PlayerDB = ContentType.objects.get(app_label="players", model="playerdb").model_class()
|
#PlayerDB = ContentType.objects.get(app_label="players", model="playerdb").model_class()
|
||||||
|
|
||||||
AT_SEARCH_RESULT = mod_import(*settings.SEARCH_AT_RESULT.rsplit('.', 1))
|
AT_SEARCH_RESULT = mod_import(*settings.SEARCH_AT_RESULT.rsplit('.', 1))
|
||||||
|
|
||||||
|
GA = object.__getattribute__
|
||||||
|
SA = object.__setattr__
|
||||||
|
DA = object.__delattr__
|
||||||
|
|
||||||
#------------------------------------------------------------
|
#------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# ObjAttribute
|
# ObjAttribute
|
||||||
|
|
@ -208,20 +212,25 @@ class ObjectDB(TypedObject):
|
||||||
#@property
|
#@property
|
||||||
def aliases_get(self):
|
def aliases_get(self):
|
||||||
"Getter. Allows for value = self.aliases"
|
"Getter. Allows for value = self.aliases"
|
||||||
return list(Alias.objects.filter(db_obj=self).values_list("db_key", flat=True))
|
try:
|
||||||
|
return GA(self, "_cached_aliases")
|
||||||
|
except AttributeError:
|
||||||
|
aliases = list(Alias.objects.filter(db_obj=self).values_list("db_key", flat=True))
|
||||||
|
SA(self, "_cached_aliases", aliases)
|
||||||
|
return aliases
|
||||||
#@aliases.setter
|
#@aliases.setter
|
||||||
def aliases_set(self, aliases):
|
def aliases_set(self, aliases):
|
||||||
"Setter. Allows for self.aliases = value"
|
"Setter. Allows for self.aliases = value"
|
||||||
if not is_iter(aliases):
|
for alias in make_iter(aliases):
|
||||||
aliases = [aliases]
|
|
||||||
for alias in aliases:
|
|
||||||
new_alias = Alias(db_key=alias, db_obj=self)
|
new_alias = Alias(db_key=alias, db_obj=self)
|
||||||
new_alias.save()
|
new_alias.save()
|
||||||
|
SA(self, "_cached_aliases", aliases)
|
||||||
#@aliases.deleter
|
#@aliases.deleter
|
||||||
def aliases_del(self):
|
def aliases_del(self):
|
||||||
"Deleter. Allows for del self.aliases"
|
"Deleter. Allows for del self.aliases"
|
||||||
for alias in Alias.objects.filter(db_obj=self):
|
for alias in Alias.objects.filter(db_obj=self):
|
||||||
alias.delete()
|
alias.delete()
|
||||||
|
DA(self, "_cached_aliases")
|
||||||
aliases = property(aliases_get, aliases_set, aliases_del)
|
aliases = property(aliases_get, aliases_set, aliases_del)
|
||||||
|
|
||||||
# player property (wraps db_player)
|
# player property (wraps db_player)
|
||||||
|
|
@ -365,30 +374,6 @@ class ObjectDB(TypedObject):
|
||||||
self.save()
|
self.save()
|
||||||
destination = property(destination_get, destination_set, destination_del)
|
destination = property(destination_get, destination_set, destination_del)
|
||||||
|
|
||||||
#@property for consistent aliases access throughout Evennia
|
|
||||||
#@aliases.setter
|
|
||||||
def aliases_set(self, aliases):
|
|
||||||
"Adds an alias to object"
|
|
||||||
if not is_iter(aliases):
|
|
||||||
aliases = [aliases]
|
|
||||||
for alias in aliases:
|
|
||||||
query = Alias.objects.filter(db_obj=self, db_key__iexact=alias)
|
|
||||||
if query.count():
|
|
||||||
continue
|
|
||||||
new_alias = Alias(db_key=alias, db_obj=self)
|
|
||||||
new_alias.save()
|
|
||||||
#@aliases.getter
|
|
||||||
def aliases_get(self):
|
|
||||||
"Return a list of all aliases defined on this object."
|
|
||||||
return list(Alias.objects.filter(db_obj=self).values_list("db_key", flat=True))
|
|
||||||
#@aliases.deleter
|
|
||||||
def aliases_del(self):
|
|
||||||
"Removes aliases from object"
|
|
||||||
query = Alias.objects.filter(db_obj=self)
|
|
||||||
if query:
|
|
||||||
query.delete()
|
|
||||||
aliases = property(aliases_get, aliases_set, aliases_del)
|
|
||||||
|
|
||||||
# cmdset_storage property
|
# cmdset_storage property
|
||||||
#@property
|
#@property
|
||||||
def cmdset_storage_get(self):
|
def cmdset_storage_get(self):
|
||||||
|
|
@ -399,8 +384,7 @@ class ObjectDB(TypedObject):
|
||||||
#@cmdset_storage.setter
|
#@cmdset_storage.setter
|
||||||
def cmdset_storage_set(self, value):
|
def cmdset_storage_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(str(val).strip() for val in make_iter(value))
|
||||||
value = ",".join([str(val).strip() for val in value])
|
|
||||||
self.db_cmdset_storage = value
|
self.db_cmdset_storage = value
|
||||||
self.save()
|
self.save()
|
||||||
#@cmdset_storage.deleter
|
#@cmdset_storage.deleter
|
||||||
|
|
@ -605,8 +589,7 @@ class ObjectDB(TypedObject):
|
||||||
"""
|
"""
|
||||||
contents = self.contents
|
contents = self.contents
|
||||||
if exclude:
|
if exclude:
|
||||||
if not is_iter(exclude):
|
excluce = make_iter(exclude)
|
||||||
exclude = [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:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue