From 3430aa9eae1b83a47b361e18c4e1855a63d13fb5 Mon Sep 17 00:00:00 2001 From: Griatch Date: Mon, 21 Oct 2013 22:51:16 +0200 Subject: [PATCH] Fixed bug in delcom. --- src/commands/default/comms.py | 2 +- src/comms/models.py | 4 ++-- src/objects/models.py | 7 +++---- src/typeclasses/models.py | 25 ++++++++++++++----------- 4 files changed, 20 insertions(+), 18 deletions(-) diff --git a/src/commands/default/comms.py b/src/commands/default/comms.py index ac5adf3941..1b1025adf7 100644 --- a/src/commands/default/comms.py +++ b/src/commands/default/comms.py @@ -149,7 +149,7 @@ class CmdDelCom(MuxPlayerCommand): chkey = channel.key.lower() # find all nicks linked to this channel and delete them for nick in [nick for nick in caller.nicks.get(category="channel") - if nick.db_data.lower() == chkey]: + if nick.strvalue.lower() == chkey]: nick.delete() disconnect = channel.disconnect_from(player) if disconnect: diff --git a/src/comms/models.py b/src/comms/models.py index 0a83c6bcae..cb8f1cc2c4 100644 --- a/src/comms/models.py +++ b/src/comms/models.py @@ -393,11 +393,11 @@ class ChannelDB(TypedObject): def disconnect_from(self, player): "Disconnect user from this channel." - disconnect = self.typeclass.pre_leave_channel(self, player) + disconnect = self.typeclass.pre_leave_channel(player) if not disconnect: return False PlayerChannelConnection.objects.break_connection(player, self) - self.typeclass.post_leave_channel(self, player) + self.typeclass.post_leave_channel(player) return True def delete(self): diff --git a/src/objects/models.py b/src/objects/models.py index 9b993d6d66..f76638688e 100644 --- a/src/objects/models.py +++ b/src/objects/models.py @@ -304,15 +304,14 @@ class ObjectDB(TypedObject): return self.typeclass if use_nicks: - nicktype = "object" # get all valid nicks to search - nicks = self.nicks.all(category="object_nick_%s" % nicktype) + nicks = self.nicks.all(category="object") if self.has_player: - pnicks = self.nicks.all(category="player_nick_%s" % nicktype) + pnicks = self.nicks.all(category="player") nicks = nicks + pnicks for nick in nicks: if searchdata == nick.db_key: - searchdata = nick.db_data + searchdata = nick.strvalue break candidates=None diff --git a/src/typeclasses/models.py b/src/typeclasses/models.py index bc88d0a336..c75f9b89be 100644 --- a/src/typeclasses/models.py +++ b/src/typeclasses/models.py @@ -242,21 +242,24 @@ class AttributeHandler(object): checked before displaying each looked-after Attribute. If no accessing_obj is given, no check will be done. """ - if not key: - return None if self._cache == None or not _TYPECLASS_AGGRESSIVE_CACHE: self._recache() - catkey = to_str(category, force_string=True).lower() ret = [] - for keystr in ("%s_%s" % (k.lower(), catkey) for k in make_iter(key)): - attr_obj = self._cache.get(keystr) - if attr_obj: - ret.append(attr_obj) - else: - if raise_exception: - raise AttributeError + catkey = to_str(category, force_string=True).lower() + if not key: + # return all with matching category (or no category) + catkey = "_%s" % catkey + ret = [attr for key, attr in self._cache.items() if key.endswith(catkey)] + else: + for keystr in ("%s_%s" % (k.lower(), catkey) for k in make_iter(key)): + attr_obj = self._cache.get(keystr) + if attr_obj: + ret.append(attr_obj) else: - ret.append(default) + if raise_exception: + raise AttributeError + else: + ret.append(default) if accessing_obj: # check 'attrread' locks ret = [attr for attr in ret if attr.access(accessing_obj, self._attrread, default=default_access)]