From 80fbe03d03348ba1897c9036f375f920b3a666ea Mon Sep 17 00:00:00 2001 From: Owllex Date: Fri, 15 Apr 2022 08:34:20 -0700 Subject: [PATCH] Update to support subclasses. --- evennia/objects/tests.py | 15 +++++++++++++++ evennia/typeclasses/models.py | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/evennia/objects/tests.py b/evennia/objects/tests.py index 95d3c20e3f..a718d9b01b 100644 --- a/evennia/objects/tests.py +++ b/evennia/objects/tests.py @@ -232,12 +232,22 @@ class TestContentHandler(BaseEvenniaTest): self.assertEqual(self.room2.contents, [self.obj1, self.obj2]) +class SubAttributeProperty(AttributeProperty): + pass + + +class SubTagProperty(TagProperty): + pass + + class TestObjectPropertiesClass(DefaultObject): attr1 = AttributeProperty(default="attr1") attr2 = AttributeProperty(default="attr2", category="attrcategory") attr3 = AttributeProperty(default="attr3", autocreate=False) + attr4 = SubAttributeProperty(default="attr4") tag1 = TagProperty() tag2 = TagProperty(category="tagcategory") + tag3 = SubTagProperty() testalias = AliasProperty() testperm = PermissionProperty() @@ -276,6 +286,10 @@ class TestProperties(EvenniaTestCase): self.assertFalse(obj.attributes.has("attr3")) self.assertEqual(obj.attr3, "attr3") + self.assertEqual(obj.db.attr4, "attr4") + self.assertEqual(obj.attributes.get("attr4"), "attr4") + self.assertEqual(obj.attr4, "attr4") + obj.attr3 = "attr3b" # stores it in db! self.assertEqual(obj.db.attr3, "attr3b") @@ -283,6 +297,7 @@ class TestProperties(EvenniaTestCase): self.assertTrue(obj.tags.has("tag1")) self.assertTrue(obj.tags.has("tag2", category="tagcategory")) + self.assertTrue(obj.tags.has("tag3")) self.assertTrue(obj.aliases.has("testalias")) self.assertTrue(obj.permissions.has("testperm")) diff --git a/evennia/typeclasses/models.py b/evennia/typeclasses/models.py index 44677aff05..ca2be2fc03 100644 --- a/evennia/typeclasses/models.py +++ b/evennia/typeclasses/models.py @@ -332,7 +332,7 @@ class TypedObject(SharedMemoryModel): by fetching them once. """ for propkey, prop in self.__class__.__dict__.items(): - if isinstance(prop, (AttributeProperty, TagProperty)): + if inherits_from(prop, AttributeProperty) or inherits_from(prop, TagProperty): try: getattr(self, propkey) except Exception: