From f9c47e79458f981ea69a08063d149f2209e88b3f Mon Sep 17 00:00:00 2001 From: Griatch Date: Mon, 31 Mar 2014 07:31:48 +0200 Subject: [PATCH] Fixed a bug in removing tags from TagHandler. --- src/commands/default/admin.py | 13 +++++++------ src/typeclasses/models.py | 10 +++++----- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/commands/default/admin.py b/src/commands/default/admin.py index 9c6ddb40f2..9331f79e90 100644 --- a/src/commands/default/admin.py +++ b/src/commands/default/admin.py @@ -506,12 +506,13 @@ class CmdPerm(MuxCommand): tstring = "" if 'del' in switches: # delete the given permission(s) from object. - obj.permissions.remove(self.rhslist) - if obj.permissions.get(self.rhslist): - cstring += "\nPermissions(s) %s could not be removed from %s." % (", ".join(self.rhslist), obj.name) - else: - cstring += "\nPermission(s) %s removed from %s (if they existed)." % (", ".join(self.rhslist), obj.name) - tstring += "\n%s revokes the permission(s) %s from you." % (caller.name, ", ".join(self.rhslist)) + for perm in self.rhslist: + obj.permissions.remove(perm) + if obj.permissions.get(perm): + cstring += "\nPermissions %s could not be removed from %s." % (perm, obj.name) + else: + cstring += "\nPermission %s removed from %s (if they existed)." % (perm, obj.name) + tstring += "\n%s revokes the permission(s) %s from you." % (caller.name, perm) else: # add a new permission permissions = obj.permissions.all() diff --git a/src/typeclasses/models.py b/src/typeclasses/models.py index f2cec2aa87..18c14cbd02 100644 --- a/src/typeclasses/models.py +++ b/src/typeclasses/models.py @@ -558,17 +558,17 @@ class TagHandler(object): ret = [] category = category.strip().lower() if category is not None else None searchkey = ["%s-%s" % (key.strip().lower(), category) if key is not None else None for key in make_iter(key)] - ret = [val for val in (self._cache.get(searchkey) for keystr in key) if val] + ret = [val for val in (self._cache.get(keystr) for keystr in searchkey) if val] ret = [to_str(tag.db_data) for tag in ret] if return_tagobj else ret return ret[0] if len(ret) == 1 else ret def remove(self, key, category=None): "Remove a tag from the handler based ond key and category." - for tag in make_iter(tag): - if not (tag or tag.strip()): # we don't allow empty tags + for key in make_iter(key): + if not (key or key.strip()): # we don't allow empty tags continue - tagstr = tag.strip().lower() if tag is not None else None - category = category.strip().lower() if tag is not None else None + tagstr = key.strip().lower() + category = category.strip().lower() if category is not None else None # This does not delete the tag object itself. Maybe it should do # that when no objects reference the tag anymore (how to check)?