From baf3769945d55e59897670f9b8b6ee1ea71f9460 Mon Sep 17 00:00:00 2001 From: Wendy Wang Date: Fri, 3 Feb 2023 12:28:22 +0100 Subject: [PATCH 1/2] Cast tags to strings while checking, getting, removing; following what add() already does --- evennia/typeclasses/tags.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/evennia/typeclasses/tags.py b/evennia/typeclasses/tags.py index eea90205ee..3cb06f935f 100644 --- a/evennia/typeclasses/tags.py +++ b/evennia/typeclasses/tags.py @@ -254,7 +254,7 @@ class TagHandler(object): database lookup. """ - key = key.strip().lower() if key else None + key = str(key).strip().lower() if key else None category = category.strip().lower() if category else None if key: cachekey = "%s-%s" % (key, category) @@ -323,7 +323,10 @@ class TagHandler(object): return if not key: # don't allow an empty key in cache return - key, category = (key.strip().lower(), category.strip().lower() if category else category) + key, category = ( + str(key).strip().lower(), + category.strip().lower() if category else category, + ) cachekey = "%s-%s" % (key, category) catkey = "-%s" % category self._cache[cachekey] = tag_obj @@ -340,7 +343,10 @@ class TagHandler(object): category (str or None): A cleaned category name """ - key, category = (key.strip().lower(), category.strip().lower() if category else category) + key, category = ( + str(key).strip().lower(), + category.strip().lower() if category else category, + ) catkey = "-%s" % category if key: cachekey = "%s-%s" % (key, category) @@ -419,7 +425,7 @@ class TagHandler(object): category = category.strip().lower() if category is not None else None if key: for tag_str in make_iter(key): - tag_str = tag_str.strip().lower() + tag_str = str(tag_str).strip().lower() ret.append(bool(self._getcache(tag_str, category))) elif category: ret.extend(bool(tag) for tag in self._getcache(category=category)) @@ -507,7 +513,7 @@ class TagHandler(object): for key in make_iter(key): if not (key or key.strip()): # we don't allow empty tags continue - tagstr = key.strip().lower() + tagstr = str(key).strip().lower() category = category.strip().lower() if category else category # This does not delete the tag object itself. Maybe it should do From 28235d772459883d63133de82db56ab5731d72e9 Mon Sep 17 00:00:00 2001 From: Wendy Wang Date: Fri, 3 Feb 2023 12:33:10 +0100 Subject: [PATCH 2/2] Adding testing for tag casting changes --- evennia/typeclasses/tests.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/evennia/typeclasses/tests.py b/evennia/typeclasses/tests.py index a7793ad79f..d8a0c47f55 100644 --- a/evennia/typeclasses/tests.py +++ b/evennia/typeclasses/tests.py @@ -314,6 +314,18 @@ class TestTags(BaseEvenniaTest): self.obj1.tags.add("tagC", "categoryC") self.assertFalse(self.obj1.tags.has(category="categoryD")) + def test_integer_tag(self): + self.obj1.tags.add(1) + self.assertTrue(self.obj1.tags.has(1)) + self.assertTrue(self.obj1.tags.get(1)) + self.assertTrue(self.obj1.tags.has("1")) + self.assertTrue(self.obj1.tags.get("1")) + self.obj1.tags.remove(1) + self.assertFalse(self.obj1.tags.has(1)) + self.assertFalse(self.obj1.tags.get(1)) + self.assertFalse(self.obj1.tags.has("1")) + self.assertFalse(self.obj1.tags.get("1")) + def test_tag_add_no_category__issue_2688(self): """ Adding a tag without a category should create a new tag:None tag