From 8e607f71851d17dcd61b9afd1cbfd6a8c211e0bf Mon Sep 17 00:00:00 2001 From: Count Infinity Date: Tue, 11 Nov 2025 21:32:49 -0700 Subject: [PATCH] Fix error when creating object with None key --- evennia/objects/manager.py | 5 +++++ evennia/objects/tests.py | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/evennia/objects/manager.py b/evennia/objects/manager.py index 2982daa1d7..88b836d6b5 100644 --- a/evennia/objects/manager.py +++ b/evennia/objects/manager.py @@ -685,6 +685,11 @@ class ObjectDBManager(TypedObjectManager): "or the setting is malformed." ) + # db_key has NOT NULL constraint, convert None to empty string. + # at_first_save() will convert empty string to #dbref + if key is None: + key = "" + # create new instance new_object = typeclass( db_key=key, diff --git a/evennia/objects/tests.py b/evennia/objects/tests.py index 3d5997127d..a0dbb96d98 100644 --- a/evennia/objects/tests.py +++ b/evennia/objects/tests.py @@ -244,6 +244,20 @@ class DefaultObjectTest(BaseEvenniaTest): class TestObjectManager(BaseEvenniaTest): "Test object manager methods" + def test_create_object_with_none_key(self): + """Test that create_object() handles key=None and key="" correctly.""" + # Test with key=None - should convert to "" and then to #dbref + obj_none = ObjectDB.objects.create_object(key=None, location=self.room1) + self.assertIsNotNone(obj_none) + self.assertEqual(obj_none.key, f"#{obj_none.id}") + obj_none.delete() + + # Test with key="" - should convert to #dbref + obj_empty = ObjectDB.objects.create_object(key="", location=self.room1) + self.assertIsNotNone(obj_empty) + self.assertEqual(obj_empty.key, f"#{obj_empty.id}") + obj_empty.delete() + def test_get_object_with_account(self): query = ObjectDB.objects.get_object_with_account("TestAccount").first() self.assertEqual(query, self.char1)