diff --git a/evennia/utils/dbserialize.py b/evennia/utils/dbserialize.py index cc79eed89e..8984c876e8 100644 --- a/evennia/utils/dbserialize.py +++ b/evennia/utils/dbserialize.py @@ -35,6 +35,7 @@ from django.utils.safestring import SafeString import evennia from evennia.utils import logger from evennia.utils.utils import is_iter, to_bytes, uses_database +from enum import IntFlag __all__ = ("to_pickle", "from_pickle", "do_pickle", "do_unpickle", "dbserialize", "dbunserialize") @@ -672,6 +673,8 @@ def to_pickle(data): if dtype in (str, int, float, bool, bytes, SafeString): return item + elif isinstance(item, IntFlag): + return item.value elif dtype == tuple: return tuple(process_item(val) for val in item) elif dtype in (list, _SaverList): diff --git a/evennia/utils/tests/test_dbserialize.py b/evennia/utils/tests/test_dbserialize.py index f70bf702a0..61fac175b7 100644 --- a/evennia/utils/tests/test_dbserialize.py +++ b/evennia/utils/tests/test_dbserialize.py @@ -9,6 +9,7 @@ from parameterized import parameterized from evennia.objects.objects import DefaultObject from evennia.utils import dbserialize +from enum import IntFlag, auto class TestDbSerialize(TestCase): @@ -20,6 +21,13 @@ class TestDbSerialize(TestCase): self.obj = DefaultObject(db_key="Tester") self.obj.save() + def test_intflag(self): + class TestFlag(IntFlag): + foo = auto() + self.obj.db.test = TestFlag.foo + self.assertEqual(self.obj.db.test, TestFlag.foo) + self.obj.save() + def test_constants(self): self.obj.db.test = 1 self.obj.db.test += 1